修改了收费接口
This commit is contained in:
@@ -42,7 +42,7 @@ public class CostHouseChargeController extends BaseController {
|
|||||||
/**
|
/**
|
||||||
* 查询房屋收费列表
|
* 查询房屋收费列表
|
||||||
*/
|
*/
|
||||||
@SaCheckPermission("property:houseCharge:list")
|
// @SaCheckPermission("property:houseCharge:list")
|
||||||
@GetMapping("/list")
|
@GetMapping("/list")
|
||||||
public TableDataInfo<CostHouseChargeVo> list(CostHouseChargeBo bo, PageQuery pageQuery) {
|
public TableDataInfo<CostHouseChargeVo> list(CostHouseChargeBo bo, PageQuery pageQuery) {
|
||||||
return costHouseChargeService.queryPageList(bo, pageQuery);
|
return costHouseChargeService.queryPageList(bo, pageQuery);
|
||||||
@@ -85,6 +85,10 @@ public class CostHouseChargeController extends BaseController {
|
|||||||
public R<Void> returnFree( @RequestBody CostChargeReturnFeeBo bo) {
|
public R<Void> returnFree( @RequestBody CostChargeReturnFeeBo bo) {
|
||||||
return toAjax(costHouseChargeService.returnFree(bo));
|
return toAjax(costHouseChargeService.returnFree(bo));
|
||||||
}
|
}
|
||||||
|
@PostMapping("/addFee")
|
||||||
|
public R<Void> addFee( @RequestBody CostHouseChargeBo bo) {
|
||||||
|
return toAjax(costHouseChargeService.addFee(bo));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改房屋收费
|
* 修改房屋收费
|
||||||
|
@@ -39,6 +39,7 @@ public class PlantsRentalOrderController extends BaseController {
|
|||||||
|
|
||||||
private final IPlantsRentalOrderService plantsRentalOrderService;
|
private final IPlantsRentalOrderService plantsRentalOrderService;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询绿植租赁-订单管理列表
|
* 查询绿植租赁-订单管理列表
|
||||||
*/
|
*/
|
||||||
@@ -47,7 +48,13 @@ public class PlantsRentalOrderController extends BaseController {
|
|||||||
public TableDataInfo<PlantsRentalOrderVo> list(PlantsRentalOrderBo bo, PageQuery pageQuery) {
|
public TableDataInfo<PlantsRentalOrderVo> list(PlantsRentalOrderBo bo, PageQuery pageQuery) {
|
||||||
return plantsRentalOrderService.queryPageList(bo, pageQuery);
|
return plantsRentalOrderService.queryPageList(bo, pageQuery);
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* 查询绿植租赁-订单管理列表
|
||||||
|
*/
|
||||||
|
@GetMapping("/notSelectList")
|
||||||
|
public R<List<PlantsRentalOrderVo>> notSelectList() {
|
||||||
|
return R.ok(plantsRentalOrderService.notSelectList());
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* 导出绿植租赁-订单管理列表
|
* 导出绿植租赁-订单管理列表
|
||||||
*/
|
*/
|
||||||
|
@@ -6,6 +6,7 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import jakarta.servlet.http.HttpServletResponse;
|
import jakarta.servlet.http.HttpServletResponse;
|
||||||
import jakarta.validation.constraints.*;
|
import jakarta.validation.constraints.*;
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
|
import org.dromara.property.domain.vo.TbRoomVo;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||||
|
@@ -7,6 +7,7 @@ import jakarta.servlet.http.HttpServletResponse;
|
|||||||
import jakarta.validation.constraints.*;
|
import jakarta.validation.constraints.*;
|
||||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||||
import org.dromara.property.domain.bo.CleanOrderRecordBo;
|
import org.dromara.property.domain.bo.CleanOrderRecordBo;
|
||||||
|
import org.dromara.property.domain.vo.TbRoomVo;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
import org.dromara.common.idempotent.annotation.RepeatSubmit;
|
||||||
@@ -69,7 +70,11 @@ public class CleanOrderController extends BaseController {
|
|||||||
@PathVariable("id") Long id) {
|
@PathVariable("id") Long id) {
|
||||||
return R.ok(cleanOrderService.queryById(id));
|
return R.ok(cleanOrderService.queryById(id));
|
||||||
}
|
}
|
||||||
|
@GetMapping("/residentUnitId/{residentUnitId}")
|
||||||
|
public R<List<TbRoomVo>> getRoomList(@NotNull(message = "主键不能为空")
|
||||||
|
@PathVariable("residentUnitId") Long residentUnitId) {
|
||||||
|
return R.ok(cleanOrderService.getRoomList(residentUnitId));
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* 新增保洁订单
|
* 新增保洁订单
|
||||||
*/
|
*/
|
||||||
|
@@ -43,9 +43,14 @@ public class Clean extends TenantEntity {
|
|||||||
private String cleanContent;
|
private String cleanContent;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 保洁面积
|
* 房间id
|
||||||
*/
|
*/
|
||||||
private Double area;
|
private String roomId;
|
||||||
|
/**
|
||||||
|
* 房间id
|
||||||
|
*/
|
||||||
|
@TableField(exist = false)
|
||||||
|
private String roomText;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 计算方式
|
* 计算方式
|
||||||
|
@@ -39,6 +39,14 @@ public class CostHouseCharge extends TenantEntity {
|
|||||||
* 面积
|
* 面积
|
||||||
*/
|
*/
|
||||||
private Float area;
|
private Float area;
|
||||||
|
/**
|
||||||
|
* 订单id
|
||||||
|
*/
|
||||||
|
private Long orderId;
|
||||||
|
/**
|
||||||
|
* 类型
|
||||||
|
*/
|
||||||
|
private String type;
|
||||||
/**
|
/**
|
||||||
* 业主
|
* 业主
|
||||||
*/
|
*/
|
||||||
|
@@ -58,9 +58,9 @@ public class CostItems extends TenantEntity {
|
|||||||
private Integer chargeCycle;
|
private Integer chargeCycle;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否手机缴费
|
* 缴费方式(1微信、2支付宝、3银联、4现金)
|
||||||
*/
|
*/
|
||||||
private String isMobilePay;
|
private String paymentMode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 进位方式
|
* 进位方式
|
||||||
|
@@ -1,5 +1,8 @@
|
|||||||
package org.dromara.property.domain;
|
package org.dromara.property.domain;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import org.dromara.common.core.validate.AddGroup;
|
||||||
|
import org.dromara.common.core.validate.EditGroup;
|
||||||
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
import org.dromara.common.mybatis.core.domain.BaseEntity;
|
||||||
import com.baomidou.mybatisplus.annotation.*;
|
import com.baomidou.mybatisplus.annotation.*;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@@ -35,7 +38,10 @@ public class PlantsOrderCharge extends BaseEntity {
|
|||||||
* 订单id
|
* 订单id
|
||||||
*/
|
*/
|
||||||
private Long orderId;
|
private Long orderId;
|
||||||
|
/**
|
||||||
|
* 入驻单位id
|
||||||
|
*/
|
||||||
|
private Long residentUnitId;
|
||||||
/**
|
/**
|
||||||
* 租赁人id(系统用户)
|
* 租赁人id(系统用户)
|
||||||
*/
|
*/
|
||||||
|
@@ -40,6 +40,10 @@ public class PlantsRentalOrder extends BaseEntity {
|
|||||||
* 客户名称
|
* 客户名称
|
||||||
*/
|
*/
|
||||||
private String customerName;
|
private String customerName;
|
||||||
|
/**
|
||||||
|
* 入驻单位id
|
||||||
|
*/
|
||||||
|
private Long residentUnitId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 客户类型
|
* 客户类型
|
||||||
|
@@ -45,10 +45,11 @@ public class CostHouseChargeBo extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 业主
|
* 业主
|
||||||
*/
|
*/
|
||||||
@NotNull(message = "业主不能为空", groups = { AddGroup.class, EditGroup.class })
|
//@NotNull(message = "业主不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
|
||||||
private Long personId;
|
private Long personId;
|
||||||
|
private String costType;
|
||||||
|
private String type;
|
||||||
/**
|
/**
|
||||||
* 收费项目
|
* 收费项目
|
||||||
*/
|
*/
|
||||||
|
@@ -67,9 +67,10 @@ public class CostItemsBo extends BaseEntity {
|
|||||||
private Integer chargeCycle;
|
private Integer chargeCycle;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否手机缴费
|
* 缴费方式(1微信、2支付宝、3银联、4现金)
|
||||||
*/
|
*/
|
||||||
private String isMobilePay;
|
//@NotBlank(message = "缴费方式不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private String paymentMode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 进位方式
|
* 进位方式
|
||||||
@@ -91,7 +92,7 @@ public class CostItemsBo extends BaseEntity {
|
|||||||
/**
|
/**
|
||||||
* 计算公式
|
* 计算公式
|
||||||
*/
|
*/
|
||||||
@NotBlank(message = "计算公式不能", groups = { AddGroup.class, EditGroup.class })
|
@NotBlank(message = "计算公式不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
private String formula;
|
private String formula;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -36,11 +36,15 @@ public class PlantsOrderChargeBo extends BaseEntity {
|
|||||||
*/
|
*/
|
||||||
@NotNull(message = "订单id不能为空", groups = { AddGroup.class, EditGroup.class })
|
@NotNull(message = "订单id不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
private Long orderId;
|
private Long orderId;
|
||||||
|
/**
|
||||||
|
* 入驻单位id
|
||||||
|
*/
|
||||||
|
// @NotNull(message = "入驻单位不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private Long residentUnitId;
|
||||||
/**
|
/**
|
||||||
* 租赁人id(系统用户)
|
* 租赁人id(系统用户)
|
||||||
*/
|
*/
|
||||||
@NotNull(message = "租赁人id(系统用户)不能为空", groups = { AddGroup.class, EditGroup.class })
|
//@NotNull(message = "租赁人id(系统用户)不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
private Long userId;
|
private Long userId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -45,7 +45,11 @@ public class PlantsRentalOrderBo extends BaseEntity {
|
|||||||
*/
|
*/
|
||||||
@NotBlank(message = "客户名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
@NotBlank(message = "客户名称不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
private String customerName;
|
private String customerName;
|
||||||
|
/**
|
||||||
|
* 入驻单位id
|
||||||
|
*/
|
||||||
|
// @NotNull(message = "入驻单位不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
|
private Long residentUnitId;
|
||||||
/**
|
/**
|
||||||
* 客户类型
|
* 客户类型
|
||||||
*/
|
*/
|
||||||
|
@@ -46,10 +46,10 @@ public class CleanBo extends BaseEntity {
|
|||||||
@NotBlank(message = "计量单位不能为空", groups = { AddGroup.class, EditGroup.class })
|
@NotBlank(message = "计量单位不能为空", groups = { AddGroup.class, EditGroup.class })
|
||||||
private String measure;
|
private String measure;
|
||||||
|
|
||||||
// /**
|
/**
|
||||||
// * 保洁面积
|
* 房间id
|
||||||
// */
|
*/
|
||||||
// private Long area;
|
private String roomId;
|
||||||
/**
|
/**
|
||||||
* 保洁内容
|
* 保洁内容
|
||||||
*/
|
*/
|
||||||
|
@@ -0,0 +1,40 @@
|
|||||||
|
package org.dromara.property.domain.enums;
|
||||||
|
|
||||||
|
public enum FeeTypeEnum {
|
||||||
|
PROPERTY_MANAGEMENT_FEE("0", "物业管理费"),
|
||||||
|
MEETING_ROOM_USAGE_FEE("1", "会议室使用费"),
|
||||||
|
PARKING_FEE("2", "停车费"),
|
||||||
|
GREEN_PLANT_RENTAL_FEE("3", "绿植租赁费"),
|
||||||
|
CLEANING_SERVICE_FEE("4", "保洁服务费"),
|
||||||
|
WATER_FEE("5", "水费"),
|
||||||
|
ELECTRICITY_FEE("6", "电费"),
|
||||||
|
RENT("7", "租金"),
|
||||||
|
GAS_FEE("8", "气费"),
|
||||||
|
DEPOSIT("9", "押金");
|
||||||
|
|
||||||
|
private String code;
|
||||||
|
private String description;
|
||||||
|
|
||||||
|
FeeTypeEnum(String code, String description) {
|
||||||
|
this.code = code;
|
||||||
|
this.description = description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCode() {
|
||||||
|
return code;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription() {
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 根据 code 获取对应的枚举
|
||||||
|
public static FeeTypeEnum fromCode(String code) {
|
||||||
|
for (FeeTypeEnum feeType : FeeTypeEnum.values()) {
|
||||||
|
if (feeType.getCode().equals(code)) {
|
||||||
|
return feeType;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
throw new IllegalArgumentException("Invalid FeeType code: " + code);
|
||||||
|
}
|
||||||
|
}
|
@@ -42,7 +42,14 @@ public class CostHouseChargeDetailVo implements Serializable {
|
|||||||
* 入驻文本
|
* 入驻文本
|
||||||
*/
|
*/
|
||||||
private String residentUnitText;
|
private String residentUnitText;
|
||||||
|
/**
|
||||||
|
* 订单id
|
||||||
|
*/
|
||||||
|
private Long orderId;
|
||||||
|
/**
|
||||||
|
* 类型
|
||||||
|
*/
|
||||||
|
private String type;
|
||||||
/**
|
/**
|
||||||
* 面积
|
* 面积
|
||||||
*/
|
*/
|
||||||
|
@@ -37,10 +37,20 @@ public class CostHouseChargeVo implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 主键
|
* 主键
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "主键")
|
// @ExcelProperty(value = "主键")
|
||||||
private Long id;
|
private Long id;
|
||||||
|
/**
|
||||||
|
* 费用类型
|
||||||
|
*/
|
||||||
|
private String costType;
|
||||||
|
/**
|
||||||
|
* 订单id
|
||||||
|
*/
|
||||||
|
private Long orderId;
|
||||||
|
/**
|
||||||
|
* 类型
|
||||||
|
*/
|
||||||
|
private String type;
|
||||||
/**
|
/**
|
||||||
* 入驻单位
|
* 入驻单位
|
||||||
*/
|
*/
|
||||||
@@ -65,13 +75,19 @@ public class CostHouseChargeVo implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 收费项目
|
* 收费项目
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "收费项目")
|
|
||||||
private Long costItemsId;
|
private Long costItemsId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 收费项目Text
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "收费项目")
|
||||||
|
private String chargeItemText;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 支付方式
|
* 支付方式
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "支付方式")
|
@ExcelProperty(value = "支付方式", converter = ExcelDictConvert.class)
|
||||||
|
@ExcelDictFormat(dictType = "wy_zffs")
|
||||||
private String payType;
|
private String payType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -116,7 +132,7 @@ public class CostHouseChargeVo implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 搜索值
|
* 搜索值
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "搜索值")
|
// @ExcelProperty(value = "搜索值")
|
||||||
private String searchValue;
|
private String searchValue;
|
||||||
|
|
||||||
|
|
||||||
|
@@ -71,10 +71,9 @@ public class CostItemsVo implements Serializable {
|
|||||||
private Integer chargeCycle;
|
private Integer chargeCycle;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否手机缴费
|
* 缴费方式(1微信、2支付宝、3银联、4现金)
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "是否手机缴费")
|
private String paymentMode;
|
||||||
private String isMobilePay;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 进位方式
|
* 进位方式
|
||||||
|
@@ -6,6 +6,9 @@ import java.util.Date;
|
|||||||
import com.baomidou.mybatisplus.annotation.FieldFill;
|
import com.baomidou.mybatisplus.annotation.FieldFill;
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import jakarta.validation.constraints.NotBlank;
|
||||||
|
import org.dromara.common.core.validate.AddGroup;
|
||||||
|
import org.dromara.common.core.validate.EditGroup;
|
||||||
import org.dromara.property.domain.PlantsOrderCharge;
|
import org.dromara.property.domain.PlantsOrderCharge;
|
||||||
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
|
||||||
import cn.idev.excel.annotation.ExcelProperty;
|
import cn.idev.excel.annotation.ExcelProperty;
|
||||||
@@ -50,9 +53,17 @@ public class PlantsOrderChargeVo implements Serializable {
|
|||||||
* 租赁人id(系统用户)
|
* 租赁人id(系统用户)
|
||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "租赁人id", converter = ExcelDictConvert.class)
|
@ExcelProperty(value = "租赁人id", converter = ExcelDictConvert.class)
|
||||||
@ExcelDictFormat(readConverterExp = "系=统用户")
|
@ExcelDictFormat(readConverterExp = "系统用户")
|
||||||
private Long userId;
|
private Long userId;
|
||||||
|
/**
|
||||||
|
* 入驻单位id
|
||||||
|
*/
|
||||||
|
private Long residentUnitId;
|
||||||
|
/**
|
||||||
|
* 入驻单位
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "入驻单位")
|
||||||
|
private String residentUnitText;
|
||||||
/**
|
/**
|
||||||
* 租赁人名称
|
* 租赁人名称
|
||||||
*/
|
*/
|
||||||
|
@@ -49,6 +49,15 @@ public class PlantsRentalOrderVo implements Serializable {
|
|||||||
*/
|
*/
|
||||||
@ExcelProperty(value = "客户名称")
|
@ExcelProperty(value = "客户名称")
|
||||||
private String customerName;
|
private String customerName;
|
||||||
|
/**
|
||||||
|
* 入驻单位id
|
||||||
|
*/
|
||||||
|
private Long residentUnitId;
|
||||||
|
/**
|
||||||
|
* 入驻单位text
|
||||||
|
*/
|
||||||
|
@ExcelProperty(value = "入驻单位")
|
||||||
|
private String residentUnitText;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 客户类型
|
* 客户类型
|
||||||
|
@@ -43,10 +43,10 @@ public class CleanVo implements Serializable {
|
|||||||
@ExcelProperty(value = "计量单位")
|
@ExcelProperty(value = "计量单位")
|
||||||
private String measure;
|
private String measure;
|
||||||
|
|
||||||
// /**
|
/**
|
||||||
// * 保洁面积
|
* 房间id
|
||||||
// */
|
*/
|
||||||
// private Long area;
|
private String roomId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 计算方式
|
* 计算方式
|
||||||
|
@@ -95,6 +95,10 @@ public class ResidentUnitVo implements Serializable {
|
|||||||
* 建筑面积(房间建筑面积和,平方千米)
|
* 建筑面积(房间建筑面积和,平方千米)
|
||||||
*/
|
*/
|
||||||
private Float area;
|
private Float area;
|
||||||
|
/**
|
||||||
|
* 房间数
|
||||||
|
*/
|
||||||
|
private Integer roomNumber;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 备注
|
* 备注
|
||||||
|
@@ -75,4 +75,6 @@ public interface ICostHouseChargeService {
|
|||||||
* @return 是否删除成功
|
* @return 是否删除成功
|
||||||
*/
|
*/
|
||||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||||
|
|
||||||
|
Boolean addFee(CostHouseChargeBo bo);
|
||||||
}
|
}
|
||||||
|
@@ -107,5 +107,9 @@ public interface IPlantsRentalOrderService {
|
|||||||
*/
|
*/
|
||||||
Map<String,Integer> countCustomers();
|
Map<String,Integer> countCustomers();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询未生成收费的订单
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<PlantsRentalOrderVo> notSelectList();
|
||||||
}
|
}
|
||||||
|
@@ -1,6 +1,8 @@
|
|||||||
package org.dromara.property.service.cleanOrderService;
|
package org.dromara.property.service.cleanOrderService;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
import org.dromara.property.domain.bo.CleanOrderRecordBo;
|
import org.dromara.property.domain.bo.CleanOrderRecordBo;
|
||||||
|
import org.dromara.property.domain.vo.TbRoomVo;
|
||||||
import org.dromara.property.domain.vo.cleanOrderVo.CleanOrderVo;
|
import org.dromara.property.domain.vo.cleanOrderVo.CleanOrderVo;
|
||||||
import org.dromara.property.domain.bo.cleanOrderBo.CleanOrderBo;
|
import org.dromara.property.domain.bo.cleanOrderBo.CleanOrderBo;
|
||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
@@ -73,4 +75,5 @@ public interface ICleanOrderService {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
int assign(CleanOrderBo bo);
|
int assign(CleanOrderBo bo);
|
||||||
|
List<TbRoomVo> getRoomList(@NotNull(message = "主键不能为空") Long residentUnitId);
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,7 @@
|
|||||||
package org.dromara.property.service.cleanOrderService;
|
package org.dromara.property.service.cleanOrderService;
|
||||||
|
|
||||||
|
import jakarta.validation.constraints.NotNull;
|
||||||
|
import org.dromara.property.domain.vo.TbRoomVo;
|
||||||
import org.dromara.property.domain.vo.cleanOrderVo.CleanVo;
|
import org.dromara.property.domain.vo.cleanOrderVo.CleanVo;
|
||||||
import org.dromara.property.domain.bo.cleanOrderBo.CleanBo;
|
import org.dromara.property.domain.bo.cleanOrderBo.CleanBo;
|
||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
@@ -65,4 +67,6 @@ public interface ICleanService {
|
|||||||
* @return 是否删除成功
|
* @return 是否删除成功
|
||||||
*/
|
*/
|
||||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -17,6 +17,7 @@ import lombok.RequiredArgsConstructor;
|
|||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.dromara.property.domain.*;
|
import org.dromara.property.domain.*;
|
||||||
import org.dromara.property.domain.bo.CostChargeReturnFeeBo;
|
import org.dromara.property.domain.bo.CostChargeReturnFeeBo;
|
||||||
|
import org.dromara.property.domain.bo.CostItemsBo;
|
||||||
import org.dromara.property.domain.entity.resident.ResidentPerson;
|
import org.dromara.property.domain.entity.resident.ResidentPerson;
|
||||||
import org.dromara.property.domain.enums.ChargeStatusEnum;
|
import org.dromara.property.domain.enums.ChargeStatusEnum;
|
||||||
import org.dromara.property.domain.vo.*;
|
import org.dromara.property.domain.vo.*;
|
||||||
@@ -31,9 +32,11 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 房屋收费Service业务层处理
|
* 房屋收费Service业务层处理
|
||||||
@@ -89,15 +92,26 @@ public class CostHouseChargeServiceImpl implements ICostHouseChargeService {
|
|||||||
LambdaQueryWrapper<CostHouseCharge> lqw = buildQueryWrapper(bo);
|
LambdaQueryWrapper<CostHouseCharge> lqw = buildQueryWrapper(bo);
|
||||||
List<ResidentPerson> residentPeoplelist = residentPersonMapper.selectList();
|
List<ResidentPerson> residentPeoplelist = residentPersonMapper.selectList();
|
||||||
Page<CostHouseChargeVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
Page<CostHouseChargeVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||||
result.getRecords().stream().forEach(s -> {
|
if (CollUtil.isNotEmpty(result.getRecords())) {
|
||||||
if (CollUtil.isNotEmpty(residentPeoplelist)) {
|
List<Long> itemIdList = result.getRecords().stream().map(vo -> vo.getCostItemsId()).distinct().collect(Collectors.toList());
|
||||||
ResidentPerson residentPerson = residentPeoplelist.stream()
|
List<CostItemsVo> itemsVos = costItemsMapper.selectVoByIds(itemIdList).stream().collect(Collectors.toList());
|
||||||
.filter(vo -> vo.getId() != null && vo.getId().equals(s.getPersonId())).findFirst().orElse(null);
|
result.getRecords().stream().forEach(s -> {
|
||||||
s.setPersonName(ObjectUtil.isNotEmpty(residentPerson) ? residentPerson.getUserName() : null);
|
if (CollUtil.isNotEmpty(residentPeoplelist)) {
|
||||||
ResidentUnitVo residentUnitVo = residentUnitMapper.selectVoById(s.getResidentUnitId());
|
ResidentPerson residentPerson = residentPeoplelist.stream()
|
||||||
s.setResidentUnitText(ObjectUtil.isNotEmpty(residentUnitVo) ? residentUnitVo.getName() : null);
|
.filter(vo -> vo.getId() != null && vo.getId().equals(s.getPersonId())).findFirst().orElse(null);
|
||||||
}
|
s.setPersonName(ObjectUtil.isNotEmpty(residentPerson) ? residentPerson.getUserName() : null);
|
||||||
});
|
ResidentUnitVo residentUnitVo = residentUnitMapper.selectVoById(s.getResidentUnitId());
|
||||||
|
s.setResidentUnitText(ObjectUtil.isNotEmpty(residentUnitVo) ? residentUnitVo.getName() : null);
|
||||||
|
// 收费符合项目
|
||||||
|
itemsVos.stream().forEach(vo -> {
|
||||||
|
if (vo.getId().equals(s.getCostItemsId())) {
|
||||||
|
s.setChargeItemText(vo.getChargeItem());
|
||||||
|
s.setCostType(vo.getCostType());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
return TableDataInfo.build(result);
|
return TableDataInfo.build(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -110,16 +124,41 @@ public class CostHouseChargeServiceImpl implements ICostHouseChargeService {
|
|||||||
@Override
|
@Override
|
||||||
public List<CostHouseChargeVo> queryList(CostHouseChargeBo bo) {
|
public List<CostHouseChargeVo> queryList(CostHouseChargeBo bo) {
|
||||||
LambdaQueryWrapper<CostHouseCharge> lqw = buildQueryWrapper(bo);
|
LambdaQueryWrapper<CostHouseCharge> lqw = buildQueryWrapper(bo);
|
||||||
return baseMapper.selectVoList(lqw);
|
List<CostHouseChargeVo> costHouseChargeVos = baseMapper.selectVoList(lqw);
|
||||||
|
if (CollUtil.isNotEmpty(costHouseChargeVos)) {
|
||||||
|
List<Long> itemIdList = costHouseChargeVos.stream().map(vo -> vo.getCostItemsId()).distinct().collect(Collectors.toList());
|
||||||
|
Map<Long, String> itemMap = costItemsMapper.selectVoByIds(itemIdList).stream().collect(Collectors.toMap(CostItemsVo::getId, CostItemsVo::getChargeItem));
|
||||||
|
costHouseChargeVos.stream().forEach(s -> {
|
||||||
|
ResidentPersonVo residentPersonVo = residentPersonMapper.selectVoById(s.getPersonId());
|
||||||
|
s.setPersonName(ObjectUtil.isNotEmpty(residentPersonVo) ? residentPersonVo.getUserName() : null);
|
||||||
|
ResidentUnitVo residentUnitVo = residentUnitMapper.selectVoById(s.getResidentUnitId());
|
||||||
|
s.setResidentUnitText(ObjectUtil.isNotEmpty(residentUnitVo) ? residentUnitVo.getName() : null);
|
||||||
|
s.setChargeItemText(itemMap.get(s.getCostItemsId()));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
return costHouseChargeVos;
|
||||||
}
|
}
|
||||||
|
|
||||||
private LambdaQueryWrapper<CostHouseCharge> buildQueryWrapper(CostHouseChargeBo bo) {
|
private LambdaQueryWrapper<CostHouseCharge> buildQueryWrapper(CostHouseChargeBo bo) {
|
||||||
Map<String, Object> params = bo.getParams();
|
Map<String, Object> params = bo.getParams();
|
||||||
|
//查询费用 项目
|
||||||
|
|
||||||
LambdaQueryWrapper<CostHouseCharge> lqw = Wrappers.lambdaQuery();
|
LambdaQueryWrapper<CostHouseCharge> lqw = Wrappers.lambdaQuery();
|
||||||
lqw.orderByDesc(CostHouseCharge::getCreateTime)
|
lqw.orderByDesc(CostHouseCharge::getCreateTime)
|
||||||
.orderByDesc(CostHouseCharge::getUpdateTime);
|
.orderByDesc(CostHouseCharge::getUpdateTime);
|
||||||
|
List<Long> itemIdList = new ArrayList<>();
|
||||||
|
if(ObjectUtil.isNotEmpty(bo.getCostType())){
|
||||||
|
List<CostItemsVo> costItemsVos = costItemsMapper.selectVoList(
|
||||||
|
new LambdaQueryWrapper<CostItems>()
|
||||||
|
.eq(CostItems::getCostType, bo.getCostType())
|
||||||
|
);
|
||||||
|
//收集项目id
|
||||||
|
itemIdList = costItemsVos.stream().map(vo -> vo.getId()).distinct().collect(Collectors.toList());
|
||||||
|
}
|
||||||
|
lqw.in(CollUtil.isNotEmpty(itemIdList), CostHouseCharge::getCostItemsId, itemIdList );
|
||||||
lqw.eq(bo.getResidentUnitId() != null, CostHouseCharge::getResidentUnitId, bo.getResidentUnitId());
|
lqw.eq(bo.getResidentUnitId() != null, CostHouseCharge::getResidentUnitId, bo.getResidentUnitId());
|
||||||
lqw.eq(bo.getCostItemsId() != null, CostHouseCharge::getCostItemsId, bo.getCostItemsId());
|
lqw.eq(bo.getCostItemsId() != null, CostHouseCharge::getCostItemsId, bo.getCostItemsId());
|
||||||
|
lqw.eq(bo.getType()!= null, CostHouseCharge::getType, bo.getType());
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getChargeCycle()), CostHouseCharge::getChargeCycle, bo.getChargeCycle());
|
lqw.eq(StringUtils.isNotBlank(bo.getChargeCycle()), CostHouseCharge::getChargeCycle, bo.getChargeCycle());
|
||||||
lqw.eq(bo.getAmountReceivable() != null, CostHouseCharge::getAmountReceivable, bo.getAmountReceivable());
|
lqw.eq(bo.getAmountReceivable() != null, CostHouseCharge::getAmountReceivable, bo.getAmountReceivable());
|
||||||
lqw.eq(bo.getStartTime() != null, CostHouseCharge::getStartTime, bo.getStartTime());
|
lqw.eq(bo.getStartTime() != null, CostHouseCharge::getStartTime, bo.getStartTime());
|
||||||
@@ -214,7 +253,8 @@ public class CostHouseChargeServiceImpl implements ICostHouseChargeService {
|
|||||||
public Boolean updateByBo(CostHouseChargeBo bo) {
|
public Boolean updateByBo(CostHouseChargeBo bo) {
|
||||||
CostHouseCharge update = MapstructUtils.convert(bo, CostHouseCharge.class);
|
CostHouseCharge update = MapstructUtils.convert(bo, CostHouseCharge.class);
|
||||||
validEntityBeforeSave(update);
|
validEntityBeforeSave(update);
|
||||||
return baseMapper.updateById(update) > 0;
|
boolean flag = baseMapper.updateById(update) > 0;
|
||||||
|
return flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -239,4 +279,26 @@ public class CostHouseChargeServiceImpl implements ICostHouseChargeService {
|
|||||||
}
|
}
|
||||||
return baseMapper.deleteByIds(ids) > 0;
|
return baseMapper.deleteByIds(ids) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public Boolean addFee(CostHouseChargeBo bo) {
|
||||||
|
CostHouseCharge update = MapstructUtils.convert(bo, CostHouseCharge.class);
|
||||||
|
validEntityBeforeSave(update);
|
||||||
|
boolean flag = baseMapper.updateById(update) > 0;
|
||||||
|
if (flag) {
|
||||||
|
CostItemsVo costItemsVo = costItemsMapper.selectVoById(bo.getCostItemsId());
|
||||||
|
//新增缴费记录
|
||||||
|
var CostPayFeeAudit = new CostPayFeeAudit()
|
||||||
|
.setChargeId(bo.getId())
|
||||||
|
.setChargeType("1")
|
||||||
|
.setItemId(costItemsVo.getId())
|
||||||
|
.setStartTime(bo.getStartTime())
|
||||||
|
.setEndTime(bo.getEndTime())
|
||||||
|
.setReceivableAmount(bo.getAmountReceivable())
|
||||||
|
.setState("0");
|
||||||
|
return costPayFeeAuditMapper.insert(CostPayFeeAudit)>0;
|
||||||
|
}
|
||||||
|
return flag;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -84,7 +84,7 @@ public class CostItemsServiceImpl implements ICostItemsService {
|
|||||||
lqw.eq(StringUtils.isNotBlank(bo.getCostMark()), CostItems::getCostMark, bo.getCostMark());
|
lqw.eq(StringUtils.isNotBlank(bo.getCostMark()), CostItems::getCostMark, bo.getCostMark());
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getPaymentType()), CostItems::getPaymentType, bo.getPaymentType());
|
lqw.eq(StringUtils.isNotBlank(bo.getPaymentType()), CostItems::getPaymentType, bo.getPaymentType());
|
||||||
lqw.eq(bo.getChargeCycle() != null, CostItems::getChargeCycle, bo.getChargeCycle());
|
lqw.eq(bo.getChargeCycle() != null, CostItems::getChargeCycle, bo.getChargeCycle());
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getIsMobilePay()), CostItems::getIsMobilePay, bo.getIsMobilePay());
|
lqw.eq(StringUtils.isNotBlank(bo.getPaymentMode()), CostItems::getPaymentMode, bo.getPaymentMode());
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getRoundingMode()), CostItems::getRoundingMode, bo.getRoundingMode());
|
lqw.eq(StringUtils.isNotBlank(bo.getRoundingMode()), CostItems::getRoundingMode, bo.getRoundingMode());
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getCurrencyDecimals()), CostItems::getCurrencyDecimals, bo.getCurrencyDecimals());
|
lqw.eq(StringUtils.isNotBlank(bo.getCurrencyDecimals()), CostItems::getCurrencyDecimals, bo.getCurrencyDecimals());
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getState()), CostItems::getState, bo.getState());
|
lqw.eq(StringUtils.isNotBlank(bo.getState()), CostItems::getState, bo.getState());
|
||||||
|
@@ -14,10 +14,10 @@ import org.dromara.common.core.utils.MapstructUtils;
|
|||||||
import org.dromara.common.core.utils.StringUtils;
|
import org.dromara.common.core.utils.StringUtils;
|
||||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
import org.dromara.property.domain.Meet;
|
import org.dromara.property.domain.*;
|
||||||
import org.dromara.property.domain.MeetAttachOrder;
|
|
||||||
import org.dromara.property.domain.MeetBooking;
|
|
||||||
import org.dromara.property.domain.bo.MeetBookingBo;
|
import org.dromara.property.domain.bo.MeetBookingBo;
|
||||||
|
import org.dromara.property.domain.enums.ChargeStatusEnum;
|
||||||
|
import org.dromara.property.domain.enums.FeeTypeEnum;
|
||||||
import org.dromara.property.domain.vo.*;
|
import org.dromara.property.domain.vo.*;
|
||||||
import org.dromara.property.domain.vo.BigScreen.TodayMeetCountVo;
|
import org.dromara.property.domain.vo.BigScreen.TodayMeetCountVo;
|
||||||
import org.dromara.property.domain.vo.residentVo.ResidentPersonVo;
|
import org.dromara.property.domain.vo.residentVo.ResidentPersonVo;
|
||||||
@@ -53,6 +53,7 @@ public class MeetBookingServiceImpl implements IMeetBookingService {
|
|||||||
private final TbRoomMapper roomMapper;
|
private final TbRoomMapper roomMapper;
|
||||||
private final MeetMapper meetMapper;
|
private final MeetMapper meetMapper;
|
||||||
private final ResidentUnitMapper residentUnitMapper;
|
private final ResidentUnitMapper residentUnitMapper;
|
||||||
|
private final CostHouseChargeMapper costHouseChargeMapper;
|
||||||
@DubboReference
|
@DubboReference
|
||||||
private RemoteUserService remoteUserService;
|
private RemoteUserService remoteUserService;
|
||||||
|
|
||||||
@@ -279,9 +280,40 @@ public class MeetBookingServiceImpl implements IMeetBookingService {
|
|||||||
public Boolean updateByBo(MeetBookingBo bo) {
|
public Boolean updateByBo(MeetBookingBo bo) {
|
||||||
MeetBooking update = MapstructUtils.convert(bo, MeetBooking.class);
|
MeetBooking update = MapstructUtils.convert(bo, MeetBooking.class);
|
||||||
validEntityBeforeSave(update);
|
validEntityBeforeSave(update);
|
||||||
return baseMapper.updateById(update) > 0;
|
boolean flag = baseMapper.updateById(update) > 0;
|
||||||
}
|
if(flag){
|
||||||
|
if(bo.getState().equals(2)){
|
||||||
|
// 检查是否已存在关联的收费记录
|
||||||
|
boolean exists = costHouseChargeMapper.selectCount(
|
||||||
|
new LambdaQueryWrapper<CostHouseCharge>()
|
||||||
|
.eq(CostHouseCharge::getOrderId, bo.getId())
|
||||||
|
) > 0;
|
||||||
|
if (!exists) {
|
||||||
|
handleAddPay(update);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return flag;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 处理新增缴费
|
||||||
|
*/
|
||||||
|
private void handleAddPay(MeetBooking meetBooking) {
|
||||||
|
CostHouseCharge costHouseCharge = new CostHouseCharge();
|
||||||
|
costHouseCharge.setOrderId(meetBooking.getId());
|
||||||
|
costHouseCharge.setResidentUnitId(Long.valueOf(meetBooking.getUnit()));
|
||||||
|
ResidentUnitVo residentUnitVo = residentUnitMapper.selectVoById(Long.valueOf(meetBooking.getUnit()));
|
||||||
|
costHouseCharge.setArea(ObjectUtil.isNotEmpty(residentUnitVo)?residentUnitVo.getArea():null);
|
||||||
|
costHouseCharge.setType(FeeTypeEnum.MEETING_ROOM_USAGE_FEE.getCode());
|
||||||
|
costHouseCharge.setChargeStatus(ChargeStatusEnum.PAYMENT_IS_SUBJECT_TO_REVIEW.getValue());
|
||||||
|
costHouseCharge.setAmountReceivable(meetBooking.getPrice());
|
||||||
|
|
||||||
|
costHouseCharge.setStartTime(meetBooking.getScheduledStarttime());
|
||||||
|
costHouseCharge.setEndTime(meetBooking.getScheduledEndtime());
|
||||||
|
costHouseCharge.setRemark("会议室预约订单");
|
||||||
|
costHouseChargeMapper.insert(costHouseCharge);
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* 保存前的数据校验
|
* 保存前的数据校验
|
||||||
*/
|
*/
|
||||||
|
@@ -1,5 +1,7 @@
|
|||||||
package org.dromara.property.service.impl;
|
package org.dromara.property.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||||
import org.dromara.common.core.utils.MapstructUtils;
|
import org.dromara.common.core.utils.MapstructUtils;
|
||||||
import org.dromara.common.core.utils.StringUtils;
|
import org.dromara.common.core.utils.StringUtils;
|
||||||
@@ -10,9 +12,16 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.dromara.property.domain.CostHouseCharge;
|
||||||
import org.dromara.property.domain.Meet;
|
import org.dromara.property.domain.Meet;
|
||||||
import org.dromara.property.domain.PlantsOrderMaintain;
|
import org.dromara.property.domain.PlantsOrderMaintain;
|
||||||
|
import org.dromara.property.domain.bo.cleanOrderBo.CleanOrderBo;
|
||||||
|
import org.dromara.property.domain.enums.ChargeStatusEnum;
|
||||||
|
import org.dromara.property.domain.enums.FeeTypeEnum;
|
||||||
import org.dromara.property.domain.vo.PlantsRentalOrderVo;
|
import org.dromara.property.domain.vo.PlantsRentalOrderVo;
|
||||||
|
import org.dromara.property.domain.vo.residentVo.ResidentUnitVo;
|
||||||
|
import org.dromara.property.mapper.CostHouseChargeMapper;
|
||||||
|
import org.dromara.property.mapper.ResidentUnitMapper;
|
||||||
import org.dromara.property.service.IPlantsRentalOrderService;
|
import org.dromara.property.service.IPlantsRentalOrderService;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.dromara.property.domain.bo.PlantsOrderChargeBo;
|
import org.dromara.property.domain.bo.PlantsOrderChargeBo;
|
||||||
@@ -21,6 +30,7 @@ import org.dromara.property.domain.PlantsOrderCharge;
|
|||||||
import org.dromara.property.mapper.PlantsOrderChargeMapper;
|
import org.dromara.property.mapper.PlantsOrderChargeMapper;
|
||||||
import org.dromara.property.service.IPlantsOrderChargeService;
|
import org.dromara.property.service.IPlantsOrderChargeService;
|
||||||
|
|
||||||
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@@ -37,7 +47,8 @@ import java.util.Collection;
|
|||||||
public class PlantsOrderChargeServiceImpl implements IPlantsOrderChargeService {
|
public class PlantsOrderChargeServiceImpl implements IPlantsOrderChargeService {
|
||||||
|
|
||||||
private final PlantsOrderChargeMapper baseMapper;
|
private final PlantsOrderChargeMapper baseMapper;
|
||||||
|
private final ResidentUnitMapper residentUnitMapper;
|
||||||
|
private final CostHouseChargeMapper costHouseChargeMapper;
|
||||||
private final IPlantsRentalOrderService plantsRentalOrderService;
|
private final IPlantsRentalOrderService plantsRentalOrderService;
|
||||||
/**
|
/**
|
||||||
* 查询绿植租赁-订单收费
|
* 查询绿植租赁-订单收费
|
||||||
@@ -52,6 +63,11 @@ public class PlantsOrderChargeServiceImpl implements IPlantsOrderChargeService {
|
|||||||
PlantsRentalOrderVo orderVo = plantsRentalOrderService.queryById(orderChargeVo.getOrderId());
|
PlantsRentalOrderVo orderVo = plantsRentalOrderService.queryById(orderChargeVo.getOrderId());
|
||||||
orderChargeVo.setRentalOrder(orderVo);
|
orderChargeVo.setRentalOrder(orderVo);
|
||||||
}
|
}
|
||||||
|
//查询入驻单位名称
|
||||||
|
if(ObjectUtil.isNotEmpty(orderChargeVo.getResidentUnitId())){
|
||||||
|
ResidentUnitVo residentUnitVo = residentUnitMapper.selectVoById(orderChargeVo.getResidentUnitId());
|
||||||
|
orderChargeVo.setResidentUnitText(ObjectUtil.isNotEmpty(residentUnitVo)?residentUnitVo.getName() : null);
|
||||||
|
}
|
||||||
return orderChargeVo;
|
return orderChargeVo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -118,10 +134,37 @@ public class PlantsOrderChargeServiceImpl implements IPlantsOrderChargeService {
|
|||||||
boolean flag = baseMapper.insert(add) > 0;
|
boolean flag = baseMapper.insert(add) > 0;
|
||||||
if (flag) {
|
if (flag) {
|
||||||
bo.setId(add.getId());
|
bo.setId(add.getId());
|
||||||
|
// 检查是否已存在关联的收费记录
|
||||||
|
boolean exists = costHouseChargeMapper.selectCount(
|
||||||
|
new LambdaQueryWrapper<CostHouseCharge>()
|
||||||
|
.eq(CostHouseCharge::getOrderId, bo.getId())
|
||||||
|
) > 0;
|
||||||
|
if (!exists) {
|
||||||
|
handleAddPay(add);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return flag;
|
return flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理新增缴费
|
||||||
|
*/
|
||||||
|
private void handleAddPay(PlantsOrderCharge plantsOrderCharge) {
|
||||||
|
CostHouseCharge costHouseCharge = new CostHouseCharge();
|
||||||
|
costHouseCharge.setOrderId(plantsOrderCharge.getId());
|
||||||
|
costHouseCharge.setResidentUnitId(plantsOrderCharge.getResidentUnitId());
|
||||||
|
ResidentUnitVo residentUnitVo = residentUnitMapper.selectVoById(plantsOrderCharge.getResidentUnitId());
|
||||||
|
costHouseCharge.setArea(ObjectUtil.isNotEmpty(residentUnitVo)?residentUnitVo.getArea():null);
|
||||||
|
costHouseCharge.setType(FeeTypeEnum.GREEN_PLANT_RENTAL_FEE.getCode());
|
||||||
|
costHouseCharge.setChargeStatus(ChargeStatusEnum.PAYMENT_IS_SUBJECT_TO_REVIEW.getValue());
|
||||||
|
costHouseCharge.setAmountReceivable(plantsOrderCharge.getTotalAmount());
|
||||||
|
//查询订单详情
|
||||||
|
PlantsRentalOrderVo orderVo = plantsRentalOrderService.queryById(plantsOrderCharge.getOrderId());
|
||||||
|
costHouseCharge.setStartTime(orderVo.getStartTime());
|
||||||
|
costHouseCharge.setEndTime(orderVo.getEndTime());
|
||||||
|
costHouseCharge.setRemark("绿植订单");
|
||||||
|
costHouseChargeMapper.insert(costHouseCharge);
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* 修改绿植租赁-订单收费
|
* 修改绿植租赁-订单收费
|
||||||
*
|
*
|
||||||
|
@@ -1,6 +1,9 @@
|
|||||||
package org.dromara.property.service.impl;
|
package org.dromara.property.service.impl;
|
||||||
|
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||||
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.dromara.common.core.exception.ServiceException;
|
import org.dromara.common.core.exception.ServiceException;
|
||||||
import org.dromara.common.core.utils.MapstructUtils;
|
import org.dromara.common.core.utils.MapstructUtils;
|
||||||
import org.dromara.common.core.utils.StringUtils;
|
import org.dromara.common.core.utils.StringUtils;
|
||||||
@@ -15,6 +18,9 @@ import org.dromara.property.domain.bo.PlantsOrderChargeBo;
|
|||||||
import org.dromara.property.domain.bo.PlantsOrderMaintainBo;
|
import org.dromara.property.domain.bo.PlantsOrderMaintainBo;
|
||||||
import org.dromara.property.domain.bo.PlantsProductBo;
|
import org.dromara.property.domain.bo.PlantsProductBo;
|
||||||
import org.dromara.property.domain.vo.*;
|
import org.dromara.property.domain.vo.*;
|
||||||
|
import org.dromara.property.domain.vo.residentVo.ResidentUnitVo;
|
||||||
|
import org.dromara.property.mapper.PlantsOrderChargeMapper;
|
||||||
|
import org.dromara.property.mapper.ResidentUnitMapper;
|
||||||
import org.dromara.property.service.*;
|
import org.dromara.property.service.*;
|
||||||
import org.dromara.system.api.RemoteDictService;
|
import org.dromara.system.api.RemoteDictService;
|
||||||
import org.dromara.system.api.domain.vo.RemoteDictDataVo;
|
import org.dromara.system.api.domain.vo.RemoteDictDataVo;
|
||||||
@@ -27,6 +33,7 @@ import org.dromara.property.mapper.PlantsRentalOrderMapper;
|
|||||||
|
|
||||||
import java.time.YearMonth;
|
import java.time.YearMonth;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 绿植租赁-订单管理Service业务层处理
|
* 绿植租赁-订单管理Service业务层处理
|
||||||
@@ -35,24 +42,27 @@ import java.util.*;
|
|||||||
* @date 2025-06-30
|
* @date 2025-06-30
|
||||||
*/
|
*/
|
||||||
@Slf4j
|
@Slf4j
|
||||||
|
@RequiredArgsConstructor
|
||||||
@Service
|
@Service
|
||||||
public class PlantsRentalOrderServiceImpl implements IPlantsRentalOrderService {
|
public class PlantsRentalOrderServiceImpl implements IPlantsRentalOrderService {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private PlantsRentalOrderMapper baseMapper;
|
private PlantsRentalOrderMapper baseMapper;
|
||||||
@Autowired
|
@Autowired
|
||||||
private RemoteDictService dictService;
|
private RemoteDictService dictService;
|
||||||
@Autowired
|
@Autowired
|
||||||
private IPlantsProductService productService;
|
private IPlantsProductService productService;
|
||||||
@Autowired
|
@Autowired
|
||||||
@Lazy
|
@Lazy
|
||||||
private IPlantsPlanProductService planProductService;
|
private IPlantsPlanProductService planProductService;
|
||||||
@Autowired
|
@Autowired
|
||||||
@Lazy
|
@Lazy
|
||||||
private IPlantsOrderMaintainService maintainService;
|
private IPlantsOrderMaintainService maintainService;
|
||||||
@Autowired
|
@Autowired
|
||||||
@Lazy
|
@Lazy
|
||||||
private IPlantsOrderChargeService chargeService;
|
private IPlantsOrderChargeService chargeService;
|
||||||
|
private final ResidentUnitMapper residentUnitMapper;
|
||||||
|
private final PlantsOrderChargeMapper plantsOrderChargeMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询绿植租赁-订单管理
|
* 查询绿植租赁-订单管理
|
||||||
@@ -64,11 +74,11 @@ public class PlantsRentalOrderServiceImpl implements IPlantsRentalOrderService {
|
|||||||
public PlantsRentalOrderVo queryById(Long id) {
|
public PlantsRentalOrderVo queryById(Long id) {
|
||||||
PlantsRentalOrderVo orderVo = baseMapper.selectVoById(id);
|
PlantsRentalOrderVo orderVo = baseMapper.selectVoById(id);
|
||||||
ArrayList<PlantsProductVo> list = new ArrayList<>();
|
ArrayList<PlantsProductVo> list = new ArrayList<>();
|
||||||
if("1".equals(orderVo.getRentalType())){
|
if ("1".equals(orderVo.getRentalType())) {
|
||||||
PlantsProductVo productVo = productService.queryById(orderVo.getProductId());
|
PlantsProductVo productVo = productService.queryById(orderVo.getProductId());
|
||||||
productVo.setPlanProNumber(orderVo.getProductNum());
|
productVo.setPlanProNumber(orderVo.getProductNum());
|
||||||
list.add(productVo);
|
list.add(productVo);
|
||||||
}else {
|
} else {
|
||||||
List<PlantsPlanProductVo> planProductVos = planProductService.queryPlanProductsInfo(orderVo.getPlanId());
|
List<PlantsPlanProductVo> planProductVos = planProductService.queryPlanProductsInfo(orderVo.getPlanId());
|
||||||
for (PlantsPlanProductVo planProductVo : planProductVos) {
|
for (PlantsPlanProductVo planProductVo : planProductVos) {
|
||||||
PlantsProductVo product = planProductVo.getProduct();
|
PlantsProductVo product = planProductVo.getProduct();
|
||||||
@@ -76,6 +86,12 @@ public class PlantsRentalOrderServiceImpl implements IPlantsRentalOrderService {
|
|||||||
list.add(product);
|
list.add(product);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//查询入驻单位名称
|
||||||
|
if (ObjectUtil.isNotEmpty(orderVo.getResidentUnitId())) {
|
||||||
|
ResidentUnitVo residentUnitVo = residentUnitMapper.selectVoById(orderVo.getResidentUnitId());
|
||||||
|
orderVo.setResidentUnitText(ObjectUtil.isNotEmpty(residentUnitVo) ? residentUnitVo.getName() : null);
|
||||||
|
}
|
||||||
|
|
||||||
orderVo.setProductList(list);
|
orderVo.setProductList(list);
|
||||||
return orderVo;
|
return orderVo;
|
||||||
}
|
}
|
||||||
@@ -126,8 +142,8 @@ public class PlantsRentalOrderServiceImpl implements IPlantsRentalOrderService {
|
|||||||
lqw.eq(bo.getIsRelet() != null, PlantsRentalOrder::getIsRelet, bo.getIsRelet());
|
lqw.eq(bo.getIsRelet() != null, PlantsRentalOrder::getIsRelet, bo.getIsRelet());
|
||||||
lqw.eq(bo.getContractStatus() != null, PlantsRentalOrder::getContractStatus, bo.getContractStatus());
|
lqw.eq(bo.getContractStatus() != null, PlantsRentalOrder::getContractStatus, bo.getContractStatus());
|
||||||
lqw.eq(bo.getSignTime() != null, PlantsRentalOrder::getSignTime, bo.getSignTime());
|
lqw.eq(bo.getSignTime() != null, PlantsRentalOrder::getSignTime, bo.getSignTime());
|
||||||
lqw.in(CollectionUtils.isNotEmpty(bo.getProductIds()),PlantsRentalOrder::getProductId,bo.getProductIds());
|
lqw.in(CollectionUtils.isNotEmpty(bo.getProductIds()), PlantsRentalOrder::getProductId, bo.getProductIds());
|
||||||
lqw.in(CollectionUtils.isNotEmpty(bo.getPlanIds()),PlantsRentalOrder::getPlanId,bo.getPlanIds());
|
lqw.in(CollectionUtils.isNotEmpty(bo.getPlanIds()), PlantsRentalOrder::getPlanId, bo.getPlanIds());
|
||||||
return lqw;
|
return lqw;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -168,19 +184,19 @@ public class PlantsRentalOrderServiceImpl implements IPlantsRentalOrderService {
|
|||||||
private void validEntityBeforeSave(PlantsRentalOrderBo bo) {
|
private void validEntityBeforeSave(PlantsRentalOrderBo bo) {
|
||||||
//租赁方式 1单点 2套餐
|
//租赁方式 1单点 2套餐
|
||||||
if ("1".equals(bo.getRentalType())) {
|
if ("1".equals(bo.getRentalType())) {
|
||||||
if (bo.getProductId() != null&&bo.getProductNum()!=null) {
|
if (bo.getProductId() != null && bo.getProductNum() != null) {
|
||||||
ArrayList<PlantsProductBo> products = new ArrayList<>();
|
ArrayList<PlantsProductBo> products = new ArrayList<>();
|
||||||
PlantsProductBo plantsProduct = new PlantsProductBo(bo.getProductId(),bo.getProductNum());
|
PlantsProductBo plantsProduct = new PlantsProductBo(bo.getProductId(), bo.getProductNum());
|
||||||
products.add(plantsProduct);
|
products.add(plantsProduct);
|
||||||
productService.deductStock(products);
|
productService.deductStock(products);
|
||||||
}else {
|
} else {
|
||||||
throw new ServiceException("租赁产品不能为空");
|
throw new ServiceException("租赁产品不能为空");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
List<PlantsProductBo> productList = bo.getProductList();
|
List<PlantsProductBo> productList = bo.getProductList();
|
||||||
if(CollectionUtils.isNotEmpty(productList)){
|
if (CollectionUtils.isNotEmpty(productList)) {
|
||||||
productService.deductStock(productList);
|
productService.deductStock(productList);
|
||||||
}else {
|
} else {
|
||||||
throw new ServiceException("租赁套餐不能为空");
|
throw new ServiceException("租赁套餐不能为空");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -204,28 +220,28 @@ public class PlantsRentalOrderServiceImpl implements IPlantsRentalOrderService {
|
|||||||
PlantsOrderMaintainBo maintainBo = new PlantsOrderMaintainBo();
|
PlantsOrderMaintainBo maintainBo = new PlantsOrderMaintainBo();
|
||||||
maintainBo.setOrderIds(ids.stream().toList());
|
maintainBo.setOrderIds(ids.stream().toList());
|
||||||
List<PlantsOrderMaintainVo> maintainList = maintainService.queryList(maintainBo);
|
List<PlantsOrderMaintainVo> maintainList = maintainService.queryList(maintainBo);
|
||||||
if(CollectionUtils.isNotEmpty(maintainList)||CollectionUtils.isNotEmpty(chargeList)){
|
if (CollectionUtils.isNotEmpty(maintainList) || CollectionUtils.isNotEmpty(chargeList)) {
|
||||||
throw new ServiceException("所选订单不可删除");
|
throw new ServiceException("所选订单不可删除");
|
||||||
}else {
|
} else {
|
||||||
//恢复产品库存
|
//恢复产品库存
|
||||||
ArrayList<PlantsProductBo> productList = new ArrayList<>();
|
ArrayList<PlantsProductBo> productList = new ArrayList<>();
|
||||||
for (Long id : ids) {
|
for (Long id : ids) {
|
||||||
PlantsRentalOrder order = baseMapper.selectById(id);
|
PlantsRentalOrder order = baseMapper.selectById(id);
|
||||||
if("1".equals(order.getRentalType())){
|
if ("1".equals(order.getRentalType())) {
|
||||||
Long productId = order.getProductId();
|
Long productId = order.getProductId();
|
||||||
Integer productNum = order.getProductNum();
|
Integer productNum = order.getProductNum();
|
||||||
productList.add(new PlantsProductBo(productId,productNum));
|
productList.add(new PlantsProductBo(productId, productNum));
|
||||||
}else {
|
} else {
|
||||||
Long planId = order.getPlanId();
|
Long planId = order.getPlanId();
|
||||||
List<PlantsPlanProductVo> planProductVos = planProductService.queryPlanProductsInfo(planId);
|
List<PlantsPlanProductVo> planProductVos = planProductService.queryPlanProductsInfo(planId);
|
||||||
for (PlantsPlanProductVo planProductVo : planProductVos) {
|
for (PlantsPlanProductVo planProductVo : planProductVos) {
|
||||||
productList.add(new PlantsProductBo(planProductVo.getProductId(),planProductVo.getProductNum()));
|
productList.add(new PlantsProductBo(planProductVo.getProductId(), planProductVo.getProductNum()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(CollectionUtils.isNotEmpty(productList)){
|
if (CollectionUtils.isNotEmpty(productList)) {
|
||||||
Boolean b = productService.addStock(productList);
|
Boolean b = productService.addStock(productList);
|
||||||
if(!b){
|
if (!b) {
|
||||||
throw new ServiceException("删除订单失败。");
|
throw new ServiceException("删除订单失败。");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -404,13 +420,29 @@ public class PlantsRentalOrderServiceImpl implements IPlantsRentalOrderService {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 统计下单客户总数
|
* 统计下单客户总数
|
||||||
|
*
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public Map<String, Integer> countCustomers() {
|
public Map<String, Integer> countCustomers() {
|
||||||
Integer count= baseMapper.countDistinctCustomerName();
|
Integer count = baseMapper.countDistinctCustomerName();
|
||||||
Map<String, Integer> map = new HashMap<>();
|
Map<String, Integer> map = new HashMap<>();
|
||||||
map.put("count",count);
|
map.put("count", count);
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询未生成收费的订单
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<PlantsRentalOrderVo> notSelectList() {
|
||||||
|
//返回idLIst
|
||||||
|
List<Long> orderIdList = plantsOrderChargeMapper.selectVoList().stream().map(vo -> vo.getOrderId()).distinct().collect(Collectors.toList());
|
||||||
|
LambdaQueryWrapper<PlantsRentalOrder> objectLambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
objectLambdaQueryWrapper.notIn(CollUtil.isNotEmpty(orderIdList),PlantsRentalOrder::getId, orderIdList);
|
||||||
|
List<PlantsRentalOrderVo> notSelectList = baseMapper.selectVoList(objectLambdaQueryWrapper);
|
||||||
|
return notSelectList;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -2,6 +2,8 @@ package org.dromara.property.service.impl.cleanOrderImpl;
|
|||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.convert.Convert;
|
||||||
|
import cn.hutool.core.date.DateUtil;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||||
@@ -14,30 +16,31 @@ import org.dromara.common.core.utils.MapstructUtils;
|
|||||||
import org.dromara.common.core.utils.StringUtils;
|
import org.dromara.common.core.utils.StringUtils;
|
||||||
import org.dromara.common.mybatis.core.page.PageQuery;
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
||||||
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
||||||
import org.dromara.common.satoken.utils.LoginHelper;
|
|
||||||
import org.dromara.property.domain.*;
|
import org.dromara.property.domain.*;
|
||||||
import org.dromara.property.domain.bo.CleanOrderRecordBo;
|
|
||||||
import org.dromara.property.domain.bo.cleanOrderBo.CleanOrderBo;
|
import org.dromara.property.domain.bo.cleanOrderBo.CleanOrderBo;
|
||||||
import org.dromara.property.domain.enums.WorkOrderStatusEnum;
|
import org.dromara.property.domain.enums.ChargeStatusEnum;
|
||||||
import org.dromara.property.domain.vo.CleanOrderRecordVo;
|
import org.dromara.property.domain.enums.FeeTypeEnum;
|
||||||
|
import org.dromara.property.domain.vo.TbRoomVo;
|
||||||
import org.dromara.property.domain.vo.cleanOrderVo.CleanOrderVo;
|
import org.dromara.property.domain.vo.cleanOrderVo.CleanOrderVo;
|
||||||
|
import org.dromara.property.domain.vo.residentVo.ResidentUnitVo;
|
||||||
import org.dromara.property.mapper.CleanOrderRecordMapper;
|
import org.dromara.property.mapper.CleanOrderRecordMapper;
|
||||||
|
import org.dromara.property.mapper.CostHouseChargeMapper;
|
||||||
|
import org.dromara.property.mapper.ResidentUnitMapper;
|
||||||
import org.dromara.property.mapper.TbRoomMapper;
|
import org.dromara.property.mapper.TbRoomMapper;
|
||||||
import org.dromara.property.mapper.cleanOrderMapper.CleanMapper;
|
import org.dromara.property.mapper.cleanOrderMapper.CleanMapper;
|
||||||
import org.dromara.property.mapper.cleanOrderMapper.CleanOrderMapper;
|
import org.dromara.property.mapper.cleanOrderMapper.CleanOrderMapper;
|
||||||
import org.dromara.property.mapper.cleanOrderMapper.CleanRelationMapper;
|
import org.dromara.property.mapper.cleanOrderMapper.CleanRelationMapper;
|
||||||
import org.dromara.property.mapper.cleanOrderMapper.CleanserverOrderMapper;
|
import org.dromara.property.mapper.cleanOrderMapper.CleanserverOrderMapper;
|
||||||
|
import org.dromara.property.service.ITbRoomService;
|
||||||
import org.dromara.property.service.cleanOrderService.ICleanOrderService;
|
import org.dromara.property.service.cleanOrderService.ICleanOrderService;
|
||||||
import org.dromara.system.api.RemoteUserService;
|
import org.dromara.system.api.RemoteUserService;
|
||||||
import org.dromara.system.api.domain.vo.RemoteUserVo;
|
|
||||||
import org.springframework.beans.BeanUtils;
|
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.*;
|
||||||
import java.util.Map;
|
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
import static org.springframework.beans.BeanUtils.copyProperties;
|
import static org.springframework.beans.BeanUtils.copyProperties;
|
||||||
|
|
||||||
@@ -57,9 +60,11 @@ public class CleanOrderServiceImpl implements ICleanOrderService {
|
|||||||
private final CleanserverOrderMapper cleanserverOrderMapper;
|
private final CleanserverOrderMapper cleanserverOrderMapper;
|
||||||
|
|
||||||
private final CleanMapper cleanMapper;
|
private final CleanMapper cleanMapper;
|
||||||
|
private final ResidentUnitMapper residentUnitMapper;
|
||||||
private final CleanRelationMapper cleanRelationMapper;
|
private final CleanRelationMapper cleanRelationMapper;
|
||||||
|
private final CostHouseChargeMapper costHouseChargeMapper;
|
||||||
private final TbRoomMapper roomMapper;
|
private final TbRoomMapper roomMapper;
|
||||||
|
private final ITbRoomService roomService;
|
||||||
@DubboReference
|
@DubboReference
|
||||||
private RemoteUserService remoteUserService;
|
private RemoteUserService remoteUserService;
|
||||||
|
|
||||||
@@ -82,7 +87,21 @@ public class CleanOrderServiceImpl implements ICleanOrderService {
|
|||||||
// 根据cleanserver_order表中的所有记录取出所有的cleanId查询出clean表中的所有记录
|
// 根据cleanserver_order表中的所有记录取出所有的cleanId查询出clean表中的所有记录
|
||||||
List<Long> cleanIds = cleanserverOrderList.stream().map(CleanserverOrder::getCleanServerId).collect(Collectors.toList());
|
List<Long> cleanIds = cleanserverOrderList.stream().map(CleanserverOrder::getCleanServerId).collect(Collectors.toList());
|
||||||
List<Clean> cleanList = cleanMapper.selectByIds(cleanIds);
|
List<Clean> cleanList = cleanMapper.selectByIds(cleanIds);
|
||||||
|
if(CollUtil.isNotEmpty(cleanList)){
|
||||||
|
cleanList.stream().forEach(item -> {
|
||||||
|
if(ObjectUtil.isNotEmpty(item.getRoomId())){
|
||||||
|
//分隔id,得到房间idlist
|
||||||
|
List<Long> roomIdList = Convert.toList(Long.class, item.getRoomId());
|
||||||
|
//换成名称
|
||||||
|
List<String> roomNames = roomService.queryRoomNameList(roomIdList);
|
||||||
|
// 元素用,拼接成字符串
|
||||||
|
if(CollUtil.isNotEmpty(roomNames)){
|
||||||
|
String locationDetail = String.join(",", roomNames);
|
||||||
|
item.setRoomText(locationDetail);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
//根据cleanserverOrderList中的所有记录取出所有的id,封装到list集合中
|
//根据cleanserverOrderList中的所有记录取出所有的id,封装到list集合中
|
||||||
List<Long> cleanserverOrderIds = cleanserverOrderList.stream().map(CleanserverOrder::getId).collect(Collectors.toList());
|
List<Long> cleanserverOrderIds = cleanserverOrderList.stream().map(CleanserverOrder::getId).collect(Collectors.toList());
|
||||||
//将查询出的cleanserverOrderIds与clean_relation比较,查出clean_relation表中的所有记录
|
//将查询出的cleanserverOrderIds与clean_relation比较,查出clean_relation表中的所有记录
|
||||||
@@ -113,11 +132,11 @@ public class CleanOrderServiceImpl implements ICleanOrderService {
|
|||||||
// Page<CleanOrderVo> result = baseMapper.selectForPage(pageQuery.build(), lqw);
|
// Page<CleanOrderVo> result = baseMapper.selectForPage(pageQuery.build(), lqw);
|
||||||
//List<Long> locationIdList = result.getRecords().stream().map(CleanOrderVo::getLocation).collect(Collectors.toList());
|
//List<Long> locationIdList = result.getRecords().stream().map(CleanOrderVo::getLocation).collect(Collectors.toList());
|
||||||
// Map<Long, String> longStringMap = roomMapper.queryRoomName(item.getLocation());
|
// Map<Long, String> longStringMap = roomMapper.queryRoomName(item.getLocation());
|
||||||
//找出符合条件的房间名称
|
//找出符合条件的房间名称
|
||||||
result.getRecords().forEach(item -> {
|
result.getRecords().forEach(item -> {
|
||||||
String localName = roomMapper.queryRoomName(item.getLocation());
|
String localName = roomMapper.queryRoomName(item.getLocation());
|
||||||
item.setLocationName(localName != null ? localName : "未知房间");
|
item.setLocationName(localName != null ? localName : "未知房间");
|
||||||
});
|
});
|
||||||
return TableDataInfo.build(result);
|
return TableDataInfo.build(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -133,7 +152,7 @@ public class CleanOrderServiceImpl implements ICleanOrderService {
|
|||||||
return baseMapper.selectVoList(lqw);
|
return baseMapper.selectVoList(lqw);
|
||||||
}
|
}
|
||||||
|
|
||||||
private LambdaQueryWrapper<CleanOrder>buildQueryWrapper(CleanOrderBo bo) {
|
private LambdaQueryWrapper<CleanOrder> buildQueryWrapper(CleanOrderBo bo) {
|
||||||
Map<String, Object> params = bo.getParams();
|
Map<String, Object> params = bo.getParams();
|
||||||
LambdaQueryWrapper<CleanOrder> lqw = Wrappers.lambdaQuery();
|
LambdaQueryWrapper<CleanOrder> lqw = Wrappers.lambdaQuery();
|
||||||
lqw.orderByDesc(CleanOrder::getCreateTime)
|
lqw.orderByDesc(CleanOrder::getCreateTime)
|
||||||
@@ -154,8 +173,6 @@ public class CleanOrderServiceImpl implements ICleanOrderService {
|
|||||||
lqw.eq(StringUtils.isNotBlank(bo.getPersion()), CleanOrder::getPersion, bo.getPersion());
|
lqw.eq(StringUtils.isNotBlank(bo.getPersion()), CleanOrder::getPersion, bo.getPersion());
|
||||||
lqw.eq(StringUtils.isNotBlank(bo.getPhone()), CleanOrder::getPhone, bo.getPhone());
|
lqw.eq(StringUtils.isNotBlank(bo.getPhone()), CleanOrder::getPhone, bo.getPhone());
|
||||||
//将lqw中的所有条件都封装到一个params对象中集合中
|
//将lqw中的所有条件都封装到一个params对象中集合中
|
||||||
|
|
||||||
|
|
||||||
return lqw;
|
return lqw;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -172,13 +189,15 @@ public class CleanOrderServiceImpl implements ICleanOrderService {
|
|||||||
// CleanOrder add = MapstructUtils.convert(bo, CleanOrder.class);
|
// CleanOrder add = MapstructUtils.convert(bo, CleanOrder.class);
|
||||||
CleanOrder add = new CleanOrder();
|
CleanOrder add = new CleanOrder();
|
||||||
copyProperties(bo, add);
|
copyProperties(bo, add);
|
||||||
|
|
||||||
add.setStarTime(bo.getStarTime());
|
add.setStarTime(bo.getStarTime());
|
||||||
add.setEndTime(bo.getEndTime());
|
add.setEndTime(bo.getEndTime());
|
||||||
add.setIsUnbooking(NOTUNBOOKING);
|
add.setIsUnbooking(NOTUNBOOKING);
|
||||||
boolean flag = baseMapper.insert(add) > 0;
|
boolean flag = baseMapper.insert(add) > 0;
|
||||||
if (flag){
|
if (flag) {
|
||||||
bo.setId(add.getId());
|
bo.setId(add.getId());
|
||||||
// validEntityBeforeSave(bo);
|
List<Clean> cleans = BeanUtil.copyToList(bo.getCleanList(), Clean.class);
|
||||||
|
cleanMapper.updateBatchById(cleans);
|
||||||
}
|
}
|
||||||
|
|
||||||
//取出clean_order表中的所有clean数据
|
//取出clean_order表中的所有clean数据
|
||||||
@@ -208,8 +227,8 @@ public class CleanOrderServiceImpl implements ICleanOrderService {
|
|||||||
CleanRelation cleanRelation = new CleanRelation();
|
CleanRelation cleanRelation = new CleanRelation();
|
||||||
cleanRelation.setCleanserverOrderId(cleanserverOrderIds.get(i));
|
cleanRelation.setCleanserverOrderId(cleanserverOrderIds.get(i));
|
||||||
cleanRelation.setCleanId(clean.getId());
|
cleanRelation.setCleanId(clean.getId());
|
||||||
cleanRelation.setAreas(clean.getArea());
|
// cleanRelation.setAreas(clean.getArea());
|
||||||
cleanRelation.setSumPrice(clean.getPeices() * clean.getArea());
|
cleanRelation.setSumPrice(bo.getSumPeices());
|
||||||
cleanRelationMapper.insert(cleanRelation);
|
cleanRelationMapper.insert(cleanRelation);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
@@ -227,16 +246,49 @@ public class CleanOrderServiceImpl implements ICleanOrderService {
|
|||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Boolean updateByBo(CleanOrderBo bo) {
|
public Boolean updateByBo(CleanOrderBo bo) {
|
||||||
CleanOrder update = MapstructUtils.convert(bo, CleanOrder.class);
|
CleanOrder update = MapstructUtils.convert(bo, CleanOrder.class);
|
||||||
// validEntityBeforeSave(update);
|
// validEntityBeforeSave(update);
|
||||||
update.setStarTime(bo.getStarTime());
|
update.setStarTime(bo.getStarTime());
|
||||||
update.setEndTime(bo.getStarTime());
|
update.setEndTime(bo.getStarTime());
|
||||||
return baseMapper.updateById(update) > 0;
|
boolean flag = baseMapper.updateById(update) > 0;
|
||||||
|
if (flag) {
|
||||||
|
if (bo.getState().equals(1)) {
|
||||||
|
// 检查是否已存在关联的收费记录
|
||||||
|
boolean exists = costHouseChargeMapper.selectCount(
|
||||||
|
new LambdaQueryWrapper<CostHouseCharge>()
|
||||||
|
.eq(CostHouseCharge::getOrderId, update.getId())
|
||||||
|
) > 0;
|
||||||
|
if (!exists) {
|
||||||
|
handleAddPay(bo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return flag;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 处理新增缴费
|
||||||
|
*/
|
||||||
|
private void handleAddPay(CleanOrderBo bo) {
|
||||||
|
CostHouseCharge costHouseCharge = new CostHouseCharge();
|
||||||
|
costHouseCharge.setOrderId(bo.getId());
|
||||||
|
costHouseCharge.setResidentUnitId(bo.getUnitId());
|
||||||
|
ResidentUnitVo residentUnitVo = residentUnitMapper.selectVoById(bo.getUnitId());
|
||||||
|
costHouseCharge.setArea(residentUnitVo.getArea());
|
||||||
|
costHouseCharge.setType(FeeTypeEnum.CLEANING_SERVICE_FEE.getCode());
|
||||||
|
costHouseCharge.setChargeStatus(ChargeStatusEnum.PAYMENT_IS_SUBJECT_TO_REVIEW.getValue());
|
||||||
|
costHouseCharge.setAmountReceivable(new BigDecimal(bo.getSumPeices()));
|
||||||
|
costHouseCharge.setStartTime(DateUtil.parse(bo.getStarTime()));
|
||||||
|
costHouseCharge.setEndTime(DateUtil.parse(bo.getEndTime()));
|
||||||
|
costHouseCharge.setRemark("保洁订单");
|
||||||
|
costHouseChargeMapper.insert(costHouseCharge);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 保存后的数据校验
|
* 保存后的数据校验
|
||||||
*/
|
*/
|
||||||
private void validEntityBeforeSave(CleanOrderBo bo) {}
|
private void validEntityBeforeSave(CleanOrderBo bo) {
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 校验并批量删除保洁订单信息
|
* 校验并批量删除保洁订单信息
|
||||||
@@ -253,16 +305,33 @@ public class CleanOrderServiceImpl implements ICleanOrderService {
|
|||||||
//todo:应该删除中间表中的数据
|
//todo:应该删除中间表中的数据
|
||||||
return baseMapper.deleteByIds(ids) > 0;
|
return baseMapper.deleteByIds(ids) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 指派保洁订单
|
* 指派保洁订单
|
||||||
|
*
|
||||||
* @param bo
|
* @param bo
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public int assign(CleanOrderBo bo) {
|
public int assign(CleanOrderBo bo) {
|
||||||
CleanOrderRecord cleanOrderRecord= BeanUtil.copyProperties(bo.getCleanOrderRecord(), CleanOrderRecord.class);
|
CleanOrderRecord cleanOrderRecord = BeanUtil.copyProperties(bo.getCleanOrderRecord(), CleanOrderRecord.class);
|
||||||
cleanOrderRecord.setStatus("2");
|
cleanOrderRecord.setStatus("2");
|
||||||
return cleanOrderRecordMapper.insert(cleanOrderRecord);
|
return cleanOrderRecordMapper.insert(cleanOrderRecord);
|
||||||
}
|
}
|
||||||
|
@Override
|
||||||
|
public List<TbRoomVo> getRoomList(Long residentUnitId) {
|
||||||
|
ResidentUnitVo residentUnitVo = residentUnitMapper.selectVoById(residentUnitId);
|
||||||
|
//转成Long集合
|
||||||
|
List<Long> locationList= Arrays.stream(residentUnitVo.getLocation().split(","))
|
||||||
|
.map(String::trim) // 去除空格
|
||||||
|
.filter(StringUtils::isNotBlank) // 过滤空字符串
|
||||||
|
.map(Long::valueOf) // 转换为Long
|
||||||
|
.toList();
|
||||||
|
residentUnitVo.getLocation().split(",");
|
||||||
|
return roomMapper.selectVoList(
|
||||||
|
Wrappers.<TbRoom>lambdaQuery()
|
||||||
|
.in(TbRoom::getId, locationList)
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|||||||
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.dromara.property.domain.vo.TbRoomVo;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.dromara.property.domain.bo.cleanOrderBo.CleanBo;
|
import org.dromara.property.domain.bo.cleanOrderBo.CleanBo;
|
||||||
import org.dromara.property.domain.vo.cleanOrderVo.CleanVo;
|
import org.dromara.property.domain.vo.cleanOrderVo.CleanVo;
|
||||||
@@ -135,4 +136,6 @@ public class CleanServiceImpl implements ICleanService {
|
|||||||
}
|
}
|
||||||
return baseMapper.deleteByIds(ids) > 0;
|
return baseMapper.deleteByIds(ids) > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@@ -78,6 +78,11 @@ public class ResidentUnitServiceImpl implements IResidentUnitService {
|
|||||||
Long num = personService.queryPersonCount(residentUnitVo.getId());
|
Long num = personService.queryPersonCount(residentUnitVo.getId());
|
||||||
residentUnitVo.setNumber(num);
|
residentUnitVo.setNumber(num);
|
||||||
}
|
}
|
||||||
|
List<Long> idList = Arrays.stream(residentUnitVo.getLocation().split(","))
|
||||||
|
.map(Long::parseLong)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
List<TbRoomVo> tbRoomVos = roomMapper.selectVoByIds(idList);
|
||||||
|
residentUnitVo.setRoomNumber(tbRoomVos.size());
|
||||||
return residentUnitVo;
|
return residentUnitVo;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -92,6 +97,15 @@ public class ResidentUnitServiceImpl implements IResidentUnitService {
|
|||||||
public TableDataInfo<ResidentUnitVo> queryPageList(ResidentUnitBo bo, PageQuery pageQuery) {
|
public TableDataInfo<ResidentUnitVo> queryPageList(ResidentUnitBo bo, PageQuery pageQuery) {
|
||||||
LambdaQueryWrapper<ResidentUnit> lqw = buildQueryWrapper(bo);
|
LambdaQueryWrapper<ResidentUnit> lqw = buildQueryWrapper(bo);
|
||||||
Page<ResidentUnitVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
Page<ResidentUnitVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
|
||||||
|
if(CollUtil.isNotEmpty(result.getRecords())){
|
||||||
|
result.getRecords().stream().forEach(s -> {
|
||||||
|
List<Long> idList = Arrays.stream(s.getLocation().split(","))
|
||||||
|
.map(Long::parseLong)
|
||||||
|
.collect(Collectors.toList());
|
||||||
|
List<TbRoomVo> tbRoomVos = roomMapper.selectVoByIds(idList);
|
||||||
|
s.setRoomNumber(tbRoomVos.size());
|
||||||
|
});
|
||||||
|
}
|
||||||
return TableDataInfo.build(result);
|
return TableDataInfo.build(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user