liukangdong
2025-01-10 07c1ebfe7589fd68363a9cb72301359f953658d3
Merge branch '2.0.1' of http://139.186.142.91:10010/r/productDev/funingyunwei into 2.0.1
已添加8个文件
已修改4个文件
724 ■■■■■ 文件已修改
server/db/business.yw_temp_config.permissions.sql 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwContractBillCloudController.java 19 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwTempConfigCloudController.java 103 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/YwTempConfigMapper.java 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractBill.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwTempConfig.java 67 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/YwCallTempDataVO.java 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/YwContractBillCallDataVO.java 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwContractBillService.java 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwTempConfigService.java 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractBillServiceImpl.java 128 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwTempConfigServiceImpl.java 191 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
server/db/business.yw_temp_config.permissions.sql
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,6 @@
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ywtempconfig:create', '新建催缴信息配置', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ywtempconfig:delete', '删除催缴信息配置', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ywtempconfig:update', '修改催缴信息配置', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ywtempconfig:query', '查询催缴信息配置', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
INSERT INTO `SYSTEM_PERMISSION`(`CODE`, `NAME`, `REMARK`, `FIXED`, `CREATE_USER`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DELETED`) VALUES ('business:ywtempconfig:exportExcel', '导出催缴信息配置(Excel)', '', 0, 1, CURRENT_TIMESTAMP, NULL, NULL, 0);
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwContractBillCloudController.java
@@ -10,6 +10,7 @@
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.dao.business.model.YwContractBill;
import com.doumee.dao.business.vo.YwContractBillCallDataVO;
import com.doumee.dao.business.vo.YwContractBillDataVO;
import com.doumee.service.business.YwContractBillService;
import io.swagger.annotations.Api;
@@ -80,6 +81,16 @@
        return ApiResponse.success(ywContractBillService.findPage(pageWrap));
    }
    @ApiOperation("逾期账单")
    @PostMapping("/findPageForOverdue")
    @CloudRequiredPermission("business:ywcontractbill:query")
    public ApiResponse<PageData<YwContractBill>> findPageForOverdue (@RequestBody PageWrap<YwContractBill> pageWrap,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        pageWrap.getModel().setLoginUserInfo(this.getLoginUser(token));
        return ApiResponse.success(ywContractBillService.findPageForOverdue(pageWrap));
    }
    @ApiOperation("可退款账单")
    @PostMapping("/getCanBackBill")
    @CloudRequiredPermission("business:ywcontractbill:query")
@@ -120,4 +131,12 @@
        return ApiResponse.success(ywContractBillService.getWaitDealList(contractId));
    }
    @ApiOperation("获取批量催缴数据")
    @PostMapping("/getNoticeCustomerData")
    @CloudRequiredPermission("business:ywcontractbill:query")
    public ApiResponse<List<YwContractBillCallDataVO>> getNoticeCustomerData(@RequestBody List<Integer> billIds,@RequestHeader(Constants.HEADER_USER_TOKEN) String token) {
        return ApiResponse.success(ywContractBillService.getNoticeCustomerData(billIds));
    }
}
server/visits/dmvisit_admin/src/main/java/com/doumee/cloud/admin/YwTempConfigCloudController.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,103 @@
package com.doumee.cloud.admin;
import com.doumee.api.BaseController;
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.YwTempConfig;
import com.doumee.dao.business.vo.YwCallTempDataVO;
import com.doumee.service.business.YwTempConfigService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.shiro.authz.annotation.RequiresPermissions;
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 2025/01/10 09:43
 */
@Api(tags = "催缴信息配置")
@RestController
@RequestMapping(Constants.CLOUD_SERVICE_URL_INDEX+"/business/ywTempConfig")
public class YwTempConfigCloudController extends BaseController {
    @Autowired
    private YwTempConfigService ywTempConfigService;
    @PreventRepeat
    @ApiOperation("新建")
    @PostMapping("/create")
    @RequiresPermissions("business:ywtempconfig:create")
    public ApiResponse create(@RequestBody YwTempConfig ywTempConfig) {
        return ApiResponse.success(ywTempConfigService.create(ywTempConfig));
    }
    @ApiOperation("根据ID删除")
    @GetMapping("/delete/{id}")
    @RequiresPermissions("business:ywtempconfig:delete")
    public ApiResponse deleteById(@PathVariable Integer id) {
        ywTempConfigService.deleteById(id);
        return ApiResponse.success(null);
    }
    @ApiOperation("批量删除")
    @GetMapping("/delete/batch")
    @RequiresPermissions("business:ywtempconfig: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));
        }
        ywTempConfigService.deleteByIdInBatch(idList);
        return ApiResponse.success(null);
    }
    @ApiOperation("根据ID修改")
    @PostMapping("/updateById")
    @RequiresPermissions("business:ywtempconfig:update")
    public ApiResponse updateById(@RequestBody YwTempConfig ywTempConfig) {
        ywTempConfigService.updateById(ywTempConfig);
        return ApiResponse.success(null);
    }
    @ApiOperation("分页查询")
    @PostMapping("/page")
    @RequiresPermissions("business:ywtempconfig:query")
    public ApiResponse<PageData<YwTempConfig>> findPage (@RequestBody PageWrap<YwTempConfig> pageWrap) {
        return ApiResponse.success(ywTempConfigService.findPage(pageWrap));
    }
    @ApiOperation("导出Excel")
    @PostMapping("/exportExcel")
    @RequiresPermissions("business:ywtempconfig:exportExcel")
    public void exportExcel (@RequestBody PageWrap<YwTempConfig> pageWrap, HttpServletResponse response) {
        ExcelExporter.build(YwTempConfig.class).export(ywTempConfigService.findPage(pageWrap).getRecords(), "催缴信息配置", response);
    }
    @ApiOperation("根据ID查询")
    @GetMapping("/{id}")
    @RequiresPermissions("business:ywtempconfig:query")
    public ApiResponse findById(@PathVariable Integer id) {
        return ApiResponse.success(ywTempConfigService.findById(id));
    }
    @ApiOperation("根据ID查询")
    @GetMapping("/getCallTemp")
    @RequiresPermissions("business:ywtempconfig:query")
    public ApiResponse<YwCallTempDataVO> getCallTemp() {
        return ApiResponse.success(ywTempConfigService.getCallTemp());
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/YwTempConfigMapper.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,13 @@
package com.doumee.dao.business;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.doumee.dao.business.model.YwTempConfig;
import com.github.yulichang.base.MPJBaseMapper;
/**
 * @author æ±Ÿè¹„蹄
 * @date 2025/01/10 09:43
 */
public interface YwTempConfigMapper extends MPJBaseMapper<YwTempConfig> {
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwContractBill.java
@@ -148,6 +148,15 @@
    @TableField(exist = false)
    private String customerName;
    @ApiModelProperty(value = "客户默认联系人", example = "1")
    @TableField(exist = false)
    private Integer customerUserId;
    @ApiModelProperty(value = "客户主键", example = "1")
    @TableField(exist = false)
    private Integer customerId;
    @ApiModelProperty(value = "公司名称", example = "1")
    @TableField(exist = false)
    private String companyName;
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/model/YwTempConfig.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,67 @@
package com.doumee.dao.business.model;
import com.doumee.core.annotation.excel.ExcelColumn;
import com.doumee.core.model.LoginUserModel;
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;
/**
 * å‚¬ç¼´ä¿¡æ¯é…ç½®
 * @author æ±Ÿè¹„蹄
 * @date 2025/01/10 09:43
 */
@Data
@ApiModel("催缴信息配置")
@TableName("`yw_temp_config`")
public class YwTempConfig extends LoginUserModel {
    @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=邮件模板;2=租赁通知附件;3=其他通知附件;4=账单关键字;5=合同关键字;6=其他信息;", example = "1")
    @ExcelColumn(name="类型:0=短息模板;1=邮件模板;2=租赁通知附件;3=其他通知附件;4=账单关键字;5=合同关键字;6=其他信息;")
    private Integer type;
    @ApiModelProperty(value = "标题")
    @ExcelColumn(name="标题")
    private String title;
    @ApiModelProperty(value = "文件地址 type = 2/3使用")
    @ExcelColumn(name="文件地址 type = 2/3使用")
    private String url;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/YwCallTempDataVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,39 @@
package com.doumee.dao.business.vo;
import com.doumee.dao.business.model.YwTempConfig;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2025/1/8 15:32
 */
@Data
public class YwCallTempDataVO {
    @ApiModelProperty(value = "短息模板", example = "1")
    private YwTempConfig smsTemp;
    @ApiModelProperty(value = "邮件信息模板", example = "1")
    private YwTempConfig emailTemp;
    @ApiModelProperty(value = "租赁通知单模板", example = "1")
    private YwTempConfig leaseTemp;
    @ApiModelProperty(value = "其他通知单模板", example = "1")
    private YwTempConfig otherTemp;
    @ApiModelProperty(value = "模板关键字 - è´¦å•", example = "1")
    private List<YwTempConfig> billTempList;
    @ApiModelProperty(value = "模板关键字 - åˆåŒ", example = "1")
    private List<YwTempConfig> contractTempList;
    @ApiModelProperty(value = "模板关键字 - å…¶ä»–", example = "1")
    private List<YwTempConfig> otherTempList;
}
server/visits/dmvisit_service/src/main/java/com/doumee/dao/business/vo/YwContractBillCallDataVO.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,33 @@
package com.doumee.dao.business.vo;
import com.doumee.dao.business.model.Member;
import com.doumee.dao.business.model.YwContractBill;
import com.doumee.dao.business.model.YwCustomer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.List;
/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Rk
 * @create 2025/1/8 15:32
 */
@Data
public class YwContractBillCallDataVO {
    @ApiModelProperty(value = "账单主键", example = "1")
    private Integer billId;
    @ApiModelProperty(value = "客户名称", example = "1")
    private String customerName;
    @ApiModelProperty(value = "默认联系人主键", example = "1")
    private Integer userId;
    @ApiModelProperty(value = "联系人列表", example = "1")
    private List<Member> memberList;
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwContractBillService.java
@@ -4,6 +4,7 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.YwContractBill;
import com.doumee.dao.business.vo.YwContractBillCallDataVO;
import com.doumee.dao.business.vo.YwContractBillDataVO;
import java.util.List;
@@ -91,6 +92,13 @@
    PageData<YwContractBill> findPage(PageWrap<YwContractBill> pageWrap);
    /**
     * é€¾æœŸè´¦å•分页
     * @param pageWrap
     * @return
     */
    PageData<YwContractBill> findPageForOverdue(PageWrap<YwContractBill> pageWrap);
    /**
     * æ¡ä»¶ç»Ÿè®¡
     *
     * @param ywContractBill å®žä½“对象
@@ -107,6 +115,11 @@
    List<YwContractBill> getCanBackBill(YwContractBill model);
    YwContractBillDataVO getWaitDealList(Integer contractId);
    List<YwContractBillCallDataVO> getNoticeCustomerData(List<Integer> billIds);
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/YwTempConfigService.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,101 @@
package com.doumee.service.business;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.dao.business.model.YwTempConfig;
import com.doumee.dao.business.vo.YwCallTempDataVO;
import java.util.List;
/**
 * å‚¬ç¼´ä¿¡æ¯é…ç½®Service定义
 * @author æ±Ÿè¹„蹄
 * @date 2025/01/10 09:43
 */
public interface YwTempConfigService {
    /**
     * åˆ›å»º
     *
     * @param ywTempConfig å®žä½“对象
     * @return Integer
     */
    Integer create(YwTempConfig ywTempConfig);
    /**
     * ä¸»é”®åˆ é™¤
     *
     * @param id ä¸»é”®
     */
    void deleteById(Integer id);
    /**
     * åˆ é™¤
     *
     * @param ywTempConfig å®žä½“对象
     */
    void delete(YwTempConfig ywTempConfig);
    /**
     * æ‰¹é‡ä¸»é”®åˆ é™¤
     *
     * @param ids ä¸»é”®é›†
     */
    void deleteByIdInBatch(List<Integer> ids);
    /**
     * ä¸»é”®æ›´æ–°
     *
     * @param ywTempConfig å®žä½“对象
     */
    void updateById(YwTempConfig ywTempConfig);
    /**
     * æ‰¹é‡ä¸»é”®æ›´æ–°
     *
     * @param ywTempConfigs å®žä½“集
     */
    void updateByIdInBatch(List<YwTempConfig> ywTempConfigs);
    /**
     * ä¸»é”®æŸ¥è¯¢
     *
     * @param id ä¸»é”®
     * @return YwTempConfig
     */
    YwTempConfig findById(Integer id);
    /**
     * æ¡ä»¶æŸ¥è¯¢å•条记录
     *
     * @param ywTempConfig å®žä½“对象
     * @return YwTempConfig
     */
    YwTempConfig findOne(YwTempConfig ywTempConfig);
    /**
     * æ¡ä»¶æŸ¥è¯¢
     *
     * @param ywTempConfig å®žä½“对象
     * @return List<YwTempConfig>
     */
    List<YwTempConfig> findList(YwTempConfig ywTempConfig);
    /**
     * åˆ†é¡µæŸ¥è¯¢
     *
     * @param pageWrap åˆ†é¡µå¯¹è±¡
     * @return PageData<YwTempConfig>
     */
    PageData<YwTempConfig> findPage(PageWrap<YwTempConfig> pageWrap);
    /**
     * æ¡ä»¶ç»Ÿè®¡
     *
     * @param ywTempConfig å®žä½“对象
     * @return long
     */
    long count(YwTempConfig ywTempConfig);
    YwCallTempDataVO getCallTemp();
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwContractBillServiceImpl.java
@@ -7,9 +7,11 @@
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.DateUtil;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.*;
import com.doumee.dao.business.model.*;
import com.doumee.dao.business.vo.YwContractBillCallDataVO;
import com.doumee.dao.business.vo.YwContractBillDataVO;
import com.doumee.dao.system.MultifileMapper;
import com.doumee.dao.system.model.Multifile;
@@ -55,6 +57,9 @@
    @Autowired
    private YwContractMapper ywContractMapper;
    @Autowired
    private MemberMapper memberMapper;
@@ -300,6 +305,10 @@
                            YwContractBill::getPayStatus,model.getPayStatus())
                    .eq(Objects.nonNull(model)&&Objects.nonNull(model.getType()),
                            YwContractBill::getType,model.getType())
                    .le(Objects.nonNull(model)&&Objects.nonNull(model.getIsOverdue())&&Constants.equalsInteger(model.getIsOverdue(),Constants.ONE),
                            YwContractBill::getPlanPayDate, DateUtil.getCurrDateTime())
                    .eq(Objects.nonNull(model)&&Objects.nonNull(model.getIsOverdue())&&Constants.equalsInteger(model.getIsOverdue(),Constants.ONE),
                            YwContractBill::getStatus, Constants.ZERO)
                    .eq(Objects.nonNull(model)&&Objects.nonNull(model.getContractId()),
                            YwContractBill::getContractId,model.getContractId())
                    .like(Objects.nonNull(model)&&StringUtils.isNotBlank(model.getContractCode()),
@@ -325,6 +334,78 @@
            }else{
                ywContractBill.setIsOverdue(Constants.ZERO);
            }
            //楼宇名称
            List<YwContractRoom> ywContractRoomList = ywContractBill.getYwContractRoomList();
            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywContractRoomList)){
                StringBuilder roomPathName = new StringBuilder();
                for (YwContractRoom ywContractRoom:ywContractRoomList) {
                    if(StringUtils.isNotBlank(ywContractRoom.getProjectName())){
                        roomPathName.append(ywContractRoom.getProjectName()+"/");
                    }
                    if(StringUtils.isNotBlank(ywContractRoom.getBuildingName())){
                        roomPathName.append(ywContractRoom.getBuildingName()+"/");
                    }
                    if(StringUtils.isNotBlank(ywContractRoom.getFloorName())){
                        roomPathName.append(ywContractRoom.getFloorName()+"/");
                    }
                    if(StringUtils.isNotBlank(ywContractRoom.getRoomName())){
                        roomPathName.append(ywContractRoom.getRoomName());
                    }
                    if(StringUtils.isNotBlank(roomPathName)){
                        roomPathName.append(";");
                    }
                }
                ywContractBill.setRoomPathName(roomPathName.toString());
            }
        }
        return PageData.from(iPage);
    }
    /**
     * é€¾æœŸè´¦å•
     * @param pageWrap
     * @return
     */
    @Override
    public PageData<YwContractBill> findPageForOverdue(PageWrap<YwContractBill> pageWrap) {
        IPage<YwContractBill> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        MPJLambdaWrapper<YwContractBill> queryWrapper = new MPJLambdaWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        YwContractBill model = pageWrap.getModel();
        IPage<YwContractBill> iPage = ywContractBillMapper.selectJoinPage(page,YwContractBill.class,
                queryWrapper.selectAll(YwContractBill.class)
                        .select(" ( select ifnull( sum( CASE WHEN t.bill_type = 0 and yw.REVENUE_TYPE = 0 THEN yw.ACT_RECEIVABLE_FEE when  t.bill_type = 0 and yw.REVENUE_TYPE = 1 then -yw.ACT_RECEIVABLE_FEE  when t.bill_type = 1 and yw.REVENUE_TYPE = 0 then -yw.ACT_RECEIVABLE_FEE else  yw.ACT_RECEIVABLE_FEE END),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)
                        .like(Objects.nonNull(model)&&StringUtils.isNotBlank(model.getCustomerName()),
                                YwCustomer::getName,model.getCustomerName())
                        .eq(Objects.nonNull(model)&&Objects.nonNull(model.getStatus()),
                                YwContractBill::getStatus,model.getStatus())
                        .eq(Objects.nonNull(model)&&Objects.nonNull(model.getBillType()),
                                YwContractBill::getBillType,model.getBillType())
                        .eq(Objects.nonNull(model)&&Objects.nonNull(model.getPayStatus()),
                                YwContractBill::getPayStatus,model.getPayStatus())
                        .in(Objects.nonNull(model)&&Objects.nonNull(model.getPayStatus()),
                                YwContractBill::getPayStatus,Constants.ZERO,Constants.THREE,Constants.TWO,Constants.FOUR)
                        .eq(Objects.nonNull(model)&&Objects.nonNull(model.getType()),
                                YwContractBill::getType,model.getType())
                        .le(Objects.nonNull(model)&&Objects.nonNull(model.getIsOverdue())&&Constants.equalsInteger(model.getIsOverdue(),Constants.ONE),
                                YwContractBill::getPlanPayDate, DateUtil.getCurrDateTime())
                        .eq(Objects.nonNull(model)&&Objects.nonNull(model.getIsOverdue())&&Constants.equalsInteger(model.getIsOverdue(),Constants.ONE),
                                YwContractBill::getStatus, Constants.ZERO)
                        .ge(Objects.nonNull(model)&&Objects.nonNull(model.getPlanPayDateStart()),YwContractBill::getPlanPayDate, Utils.Date.getStart(model.getPlanPayDateStart()))
                        .le(Objects.nonNull(model)&&Objects.nonNull(model.getPlanPayDateEnd()),YwContractBill::getPlanPayDate, Utils.Date.getEnd(model.getPlanPayDateEnd()))
                        .orderByDesc(YwContractBill::getId));
        this.dealRoomDetail(iPage.getRecords());
        for (YwContractBill ywContractBill:iPage.getRecords()) {
            //需收金额
            ywContractBill.setNeedReceivableFee(
                    ywContractBill.getReceivableFee().subtract(ywContractBill.getActReceivableFee())
            );
            //楼宇名称
            List<YwContractRoom> ywContractRoomList = ywContractBill.getYwContractRoomList();
            if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isNotEmpty(ywContractRoomList)){
@@ -542,4 +623,51 @@
    }
    @Override
    public List<YwContractBillCallDataVO> getNoticeCustomerData(List<Integer> billIds){
        List<YwContractBillCallDataVO> ywContractBillCallDataVOList = new ArrayList<>();
        List<YwContractBill> ywContractBillList = ywContractBillMapper.selectJoinList(YwContractBill.class,new MPJLambdaWrapper<YwContractBill>()
                .selectAll(YwContractBill.class)
                .selectAs(YwCustomer::getName,YwContractBill::getCustomerName)
                .selectAs(YwCustomer::getUserId,YwContractBill::getCustomerUserId)
                .selectAs(YwCustomer::getId,YwContractBill::getCustomerId)
                .leftJoin(YwContract.class,YwContract::getId,YwContractBill::getContractId)
                .leftJoin(YwCustomer.class,YwCustomer::getId,YwContract::getRenterId)
                .in(YwContractBill::getId,billIds)
        );
        if(com.github.xiaoymin.knife4j.core.util.CollectionUtils.isEmpty(ywContractBillList) ||
            !Constants.equalsInteger(billIds.size(),ywContractBillList.size())
        ){
            throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(),"账单数据错误,请刷新重试");
        }
        for (YwContractBill ywContractBill:ywContractBillList) {
            YwContractBillCallDataVO ywContractBillCallDataVO = new YwContractBillCallDataVO();
            ywContractBillCallDataVO.setBillId(ywContractBill.getId());
            ywContractBillCallDataVO.setCustomerName(ywContractBill.getCustomerName());
            ywContractBillCallDataVO.setUserId(ywContractBill.getCustomerUserId());
            //查询客户下的所有人员
            ywContractBillCallDataVO.setMemberList(
                memberMapper.selectList(new QueryWrapper<Member>().lambda().eq(Member::getCustomerId,ywContractBill.getCustomerId())
                        .eq(Member::getIsdeleted,Constants.ZERO))
            );
            ywContractBillCallDataVOList.add(ywContractBillCallDataVO);
        }
        return ywContractBillCallDataVOList;
    }
    public void downloadCallFeeDoc(List<Integer> billIds){
        List<YwContractBill> ywContractBillList = ywContractBillMapper.selectJoinList(YwContractBill.class,new MPJLambdaWrapper<YwContractBill>()
                .selectAll(YwContractBill.class)
                .selectAs(YwCustomer::getName,YwContractBill::getCustomerName)
                .selectAs(YwCustomer::getUserId,YwContractBill::getCustomerUserId)
                .selectAs(YwCustomer::getId,YwContractBill::getCustomerId)
                .leftJoin(YwContract.class,YwContract::getId,YwContractBill::getContractId)
                .leftJoin(YwCustomer.class,YwCustomer::getId,YwContract::getRenterId)
                .in(YwContractBill::getId,billIds)
        );
    }
}
server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/YwTempConfigServiceImpl.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,191 @@
package com.doumee.service.business.impl;
import com.doumee.core.model.PageData;
import com.doumee.core.model.PageWrap;
import com.doumee.core.utils.Constants;
import com.doumee.core.utils.Utils;
import com.doumee.dao.business.YwTempConfigMapper;
import com.doumee.dao.business.model.YwTempConfig;
import com.doumee.dao.business.vo.YwCallTempDataVO;
import com.doumee.service.business.YwTempConfigService;
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;
import java.util.Optional;
import java.util.stream.Collectors;
/**
 * å‚¬ç¼´ä¿¡æ¯é…ç½®Service实现
 * @author æ±Ÿè¹„蹄
 * @date 2025/01/10 09:43
 */
@Service
public class YwTempConfigServiceImpl implements YwTempConfigService {
    @Autowired
    private YwTempConfigMapper ywTempConfigMapper;
    @Override
    public Integer create(YwTempConfig ywTempConfig) {
        ywTempConfigMapper.insert(ywTempConfig);
        return ywTempConfig.getId();
    }
    @Override
    public void deleteById(Integer id) {
        ywTempConfigMapper.deleteById(id);
    }
    @Override
    public void delete(YwTempConfig ywTempConfig) {
        UpdateWrapper<YwTempConfig> deleteWrapper = new UpdateWrapper<>(ywTempConfig);
        ywTempConfigMapper.delete(deleteWrapper);
    }
    @Override
    public void deleteByIdInBatch(List<Integer> ids) {
        if (CollectionUtils.isEmpty(ids)) {
            return;
        }
        ywTempConfigMapper.deleteBatchIds(ids);
    }
    @Override
    public void updateById(YwTempConfig ywTempConfig) {
        ywTempConfigMapper.updateById(ywTempConfig);
    }
    @Override
    public void updateByIdInBatch(List<YwTempConfig> ywTempConfigs) {
        if (CollectionUtils.isEmpty(ywTempConfigs)) {
            return;
        }
        for (YwTempConfig ywTempConfig: ywTempConfigs) {
            this.updateById(ywTempConfig);
        }
    }
    @Override
    public YwTempConfig findById(Integer id) {
        return ywTempConfigMapper.selectById(id);
    }
    @Override
    public YwTempConfig findOne(YwTempConfig ywTempConfig) {
        QueryWrapper<YwTempConfig> wrapper = new QueryWrapper<>(ywTempConfig);
        return ywTempConfigMapper.selectOne(wrapper);
    }
    @Override
    public List<YwTempConfig> findList(YwTempConfig ywTempConfig) {
        QueryWrapper<YwTempConfig> wrapper = new QueryWrapper<>(ywTempConfig);
        return ywTempConfigMapper.selectList(wrapper);
    }
    @Override
    public PageData<YwTempConfig> findPage(PageWrap<YwTempConfig> pageWrap) {
        IPage<YwTempConfig> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
        QueryWrapper<YwTempConfig> queryWrapper = new QueryWrapper<>();
        Utils.MP.blankToNull(pageWrap.getModel());
        if (pageWrap.getModel().getId() != null) {
            queryWrapper.lambda().eq(YwTempConfig::getId, pageWrap.getModel().getId());
        }
        if (pageWrap.getModel().getCreator() != null) {
            queryWrapper.lambda().eq(YwTempConfig::getCreator, pageWrap.getModel().getCreator());
        }
        if (pageWrap.getModel().getCreateDate() != null) {
            queryWrapper.lambda().ge(YwTempConfig::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate()));
            queryWrapper.lambda().le(YwTempConfig::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate()));
        }
        if (pageWrap.getModel().getEditor() != null) {
            queryWrapper.lambda().eq(YwTempConfig::getEditor, pageWrap.getModel().getEditor());
        }
        if (pageWrap.getModel().getEditDate() != null) {
            queryWrapper.lambda().ge(YwTempConfig::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate()));
            queryWrapper.lambda().le(YwTempConfig::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate()));
        }
        if (pageWrap.getModel().getIsdeleted() != null) {
            queryWrapper.lambda().eq(YwTempConfig::getIsdeleted, pageWrap.getModel().getIsdeleted());
        }
        if (pageWrap.getModel().getRemark() != null) {
            queryWrapper.lambda().eq(YwTempConfig::getRemark, pageWrap.getModel().getRemark());
        }
        if (pageWrap.getModel().getType() != null) {
            queryWrapper.lambda().eq(YwTempConfig::getType, pageWrap.getModel().getType());
        }
        if (pageWrap.getModel().getTitle() != null) {
            queryWrapper.lambda().eq(YwTempConfig::getTitle, pageWrap.getModel().getTitle());
        }
        if (pageWrap.getModel().getUrl() != null) {
            queryWrapper.lambda().eq(YwTempConfig::getUrl, pageWrap.getModel().getUrl());
        }
        for(PageWrap.SortData sortData: pageWrap.getSorts()) {
            if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) {
                queryWrapper.orderByDesc(sortData.getProperty());
            } else {
                queryWrapper.orderByAsc(sortData.getProperty());
            }
        }
        return PageData.from(ywTempConfigMapper.selectPage(page, queryWrapper));
    }
    @Override
    public long count(YwTempConfig ywTempConfig) {
        QueryWrapper<YwTempConfig> wrapper = new QueryWrapper<>(ywTempConfig);
        return ywTempConfigMapper.selectCount(wrapper);
    }
    @Override
    public YwCallTempDataVO getCallTemp(){
        YwCallTempDataVO ywCallTempDataVO = new YwCallTempDataVO();
        List<YwTempConfig> ywTempConfigList = ywTempConfigMapper.selectList(new QueryWrapper<YwTempConfig>().lambda()
                .eq(YwTempConfig::getIsdeleted, Constants.ZERO));
        Optional<YwTempConfig> smsOptional = ywTempConfigList.stream().filter(i->Constants.equalsInteger(i.getType(),
                Constants.ZERO)).findAny();
        if (smsOptional.isPresent()) {
            ywCallTempDataVO.setSmsTemp(smsOptional.get());
        }
        Optional<YwTempConfig> emailOptional = ywTempConfigList.stream().filter(i->Constants.equalsInteger(i.getType(),
                Constants.ONE)).findAny();
        if (emailOptional.isPresent()) {
            ywCallTempDataVO.setEmailTemp(emailOptional.get());
        }
        Optional<YwTempConfig> leaseOptional = ywTempConfigList.stream().filter(i->Constants.equalsInteger(i.getType(),
                Constants.TWO)).findAny();
        if (leaseOptional.isPresent()) {
            ywCallTempDataVO.setLeaseTemp(leaseOptional.get());
        }
        Optional<YwTempConfig> otherOptional = ywTempConfigList.stream().filter(i->Constants.equalsInteger(i.getType(),
                Constants.THREE)).findAny();
        if (otherOptional.isPresent()) {
            ywCallTempDataVO.setOtherTemp(otherOptional.get());
        }
        ywCallTempDataVO.setContractTempList(
                ywTempConfigList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.FIVE)).collect(Collectors.toList())
        );
        ywCallTempDataVO.setBillTempList(
                ywTempConfigList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.FOUR)).collect(Collectors.toList())
        );
        ywCallTempDataVO.setOtherTempList(
                ywTempConfigList.stream().filter(i->Constants.equalsInteger(i.getType(),Constants.SIX)).collect(Collectors.toList())
        );
        return ywCallTempDataVO;
    }
}