修改了收费接口

This commit is contained in:
2025-09-13 00:09:58 +08:00
parent 5115c9ec85
commit 65a01f15c6
34 changed files with 512 additions and 108 deletions

View File

@@ -42,7 +42,7 @@ public class CostHouseChargeController extends BaseController {
/**
* 查询房屋收费列表
*/
@SaCheckPermission("property:houseCharge:list")
// @SaCheckPermission("property:houseCharge:list")
@GetMapping("/list")
public TableDataInfo<CostHouseChargeVo> list(CostHouseChargeBo bo, PageQuery pageQuery) {
return costHouseChargeService.queryPageList(bo, pageQuery);
@@ -85,6 +85,10 @@ public class CostHouseChargeController extends BaseController {
public R<Void> returnFree( @RequestBody CostChargeReturnFeeBo bo) {
return toAjax(costHouseChargeService.returnFree(bo));
}
@PostMapping("/addFee")
public R<Void> addFee( @RequestBody CostHouseChargeBo bo) {
return toAjax(costHouseChargeService.addFee(bo));
}
/**
* 修改房屋收费

View File

@@ -39,6 +39,7 @@ public class PlantsRentalOrderController extends BaseController {
private final IPlantsRentalOrderService plantsRentalOrderService;
/**
* 查询绿植租赁-订单管理列表
*/
@@ -47,7 +48,13 @@ public class PlantsRentalOrderController extends BaseController {
public TableDataInfo<PlantsRentalOrderVo> list(PlantsRentalOrderBo bo, PageQuery pageQuery) {
return plantsRentalOrderService.queryPageList(bo, pageQuery);
}
/**
* 查询绿植租赁-订单管理列表
*/
@GetMapping("/notSelectList")
public R<List<PlantsRentalOrderVo>> notSelectList() {
return R.ok(plantsRentalOrderService.notSelectList());
}
/**
* 导出绿植租赁-订单管理列表
*/

View File

@@ -6,6 +6,7 @@ import lombok.RequiredArgsConstructor;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.property.domain.vo.TbRoomVo;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;

View File

@@ -7,6 +7,7 @@ import jakarta.servlet.http.HttpServletResponse;
import jakarta.validation.constraints.*;
import cn.dev33.satoken.annotation.SaCheckPermission;
import org.dromara.property.domain.bo.CleanOrderRecordBo;
import org.dromara.property.domain.vo.TbRoomVo;
import org.springframework.web.bind.annotation.*;
import org.springframework.validation.annotation.Validated;
import org.dromara.common.idempotent.annotation.RepeatSubmit;
@@ -69,7 +70,11 @@ public class CleanOrderController extends BaseController {
@PathVariable("id") Long 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));
}
/**
* 新增保洁订单
*/

View File

@@ -43,9 +43,14 @@ public class Clean extends TenantEntity {
private String cleanContent;
/**
* 保洁面积
* 房间id
*/
private Double area;
private String roomId;
/**
* 房间id
*/
@TableField(exist = false)
private String roomText;
/**
* 计算方式

View File

@@ -39,6 +39,14 @@ public class CostHouseCharge extends TenantEntity {
* 面积
*/
private Float area;
/**
* 订单id
*/
private Long orderId;
/**
* 类型
*/
private String type;
/**
* 业主
*/

View File

@@ -58,9 +58,9 @@ public class CostItems extends TenantEntity {
private Integer chargeCycle;
/**
* 是否手机缴费
* 缴费方式(1微信、2支付宝、3银联、4现金)
*/
private String isMobilePay;
private String paymentMode;
/**
* 进位方式

View File

@@ -1,5 +1,8 @@
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 com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
@@ -35,7 +38,10 @@ public class PlantsOrderCharge extends BaseEntity {
* 订单id
*/
private Long orderId;
/**
* 入驻单位id
*/
private Long residentUnitId;
/**
* 租赁人id系统用户
*/

View File

@@ -40,6 +40,10 @@ public class PlantsRentalOrder extends BaseEntity {
* 客户名称
*/
private String customerName;
/**
* 入驻单位id
*/
private Long residentUnitId;
/**
* 客户类型

View File

@@ -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 String costType;
private String type;
/**
* 收费项目
*/

View File

@@ -67,9 +67,10 @@ public class CostItemsBo extends BaseEntity {
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;
/**

View File

@@ -36,11 +36,15 @@ public class PlantsOrderChargeBo extends BaseEntity {
*/
@NotNull(message = "订单id不能为空", groups = { AddGroup.class, EditGroup.class })
private Long orderId;
/**
* 入驻单位id
*/
// @NotNull(message = "入驻单位不能为空", groups = { AddGroup.class, EditGroup.class })
private Long residentUnitId;
/**
* 租赁人id系统用户
*/
@NotNull(message = "租赁人id系统用户不能为空", groups = { AddGroup.class, EditGroup.class })
//@NotNull(message = "租赁人id系统用户不能为空", groups = { AddGroup.class, EditGroup.class })
private Long userId;
/**

View File

@@ -45,7 +45,11 @@ public class PlantsRentalOrderBo extends BaseEntity {
*/
@NotBlank(message = "客户名称不能为空", groups = { AddGroup.class, EditGroup.class })
private String customerName;
/**
* 入驻单位id
*/
// @NotNull(message = "入驻单位不能为空", groups = { AddGroup.class, EditGroup.class })
private Long residentUnitId;
/**
* 客户类型
*/

View File

@@ -46,10 +46,10 @@ public class CleanBo extends BaseEntity {
@NotBlank(message = "计量单位不能为空", groups = { AddGroup.class, EditGroup.class })
private String measure;
// /**
// * 保洁面积
// */
// private Long area;
/**
* 房间id
*/
private String roomId;
/**
* 保洁内容
*/

View File

@@ -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);
}
}

View File

@@ -42,7 +42,14 @@ public class CostHouseChargeDetailVo implements Serializable {
* 入驻文本
*/
private String residentUnitText;
/**
* 订单id
*/
private Long orderId;
/**
* 类型
*/
private String type;
/**
* 面积
*/

View File

@@ -37,10 +37,20 @@ public class CostHouseChargeVo implements Serializable {
/**
* 主键
*/
@ExcelProperty(value = "主键")
// @ExcelProperty(value = "主键")
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;
/**
* 收费项目Text
*/
@ExcelProperty(value = "收费项目")
private String chargeItemText;
/**
* 支付方式
*/
@ExcelProperty(value = "支付方式")
@ExcelProperty(value = "支付方式", converter = ExcelDictConvert.class)
@ExcelDictFormat(dictType = "wy_zffs")
private String payType;
/**
@@ -116,7 +132,7 @@ public class CostHouseChargeVo implements Serializable {
/**
* 搜索值
*/
@ExcelProperty(value = "搜索值")
// @ExcelProperty(value = "搜索值")
private String searchValue;

View File

@@ -71,10 +71,9 @@ public class CostItemsVo implements Serializable {
private Integer chargeCycle;
/**
* 是否手机缴费
* 缴费方式(1微信、2支付宝、3银联、4现金)
*/
@ExcelProperty(value = "是否手机缴费")
private String isMobilePay;
private String paymentMode;
/**
* 进位方式

View File

@@ -6,6 +6,9 @@ import java.util.Date;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.TableField;
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 cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty;
@@ -50,9 +53,17 @@ public class PlantsOrderChargeVo implements Serializable {
* 租赁人id系统用户
*/
@ExcelProperty(value = "租赁人id", converter = ExcelDictConvert.class)
@ExcelDictFormat(readConverterExp = "=统用户")
@ExcelDictFormat(readConverterExp = "系统用户")
private Long userId;
/**
* 入驻单位id
*/
private Long residentUnitId;
/**
* 入驻单位
*/
@ExcelProperty(value = "入驻单位")
private String residentUnitText;
/**
* 租赁人名称
*/

View File

@@ -49,6 +49,15 @@ public class PlantsRentalOrderVo implements Serializable {
*/
@ExcelProperty(value = "客户名称")
private String customerName;
/**
* 入驻单位id
*/
private Long residentUnitId;
/**
* 入驻单位text
*/
@ExcelProperty(value = "入驻单位")
private String residentUnitText;
/**
* 客户类型

View File

@@ -43,10 +43,10 @@ public class CleanVo implements Serializable {
@ExcelProperty(value = "计量单位")
private String measure;
// /**
// * 保洁面积
// */
// private Long area;
/**
* 房间id
*/
private String roomId;
/**
* 计算方式

View File

@@ -95,6 +95,10 @@ public class ResidentUnitVo implements Serializable {
* 建筑面积(房间建筑面积和,平方千米)
*/
private Float area;
/**
* 房间数
*/
private Integer roomNumber;
/**
* 备注

View File

@@ -75,4 +75,6 @@ public interface ICostHouseChargeService {
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
Boolean addFee(CostHouseChargeBo bo);
}

View File

@@ -107,5 +107,9 @@ public interface IPlantsRentalOrderService {
*/
Map<String,Integer> countCustomers();
/**
* 查询未生成收费的订单
* @return
*/
List<PlantsRentalOrderVo> notSelectList();
}

View File

@@ -1,6 +1,8 @@
package org.dromara.property.service.cleanOrderService;
import jakarta.validation.constraints.NotNull;
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.bo.cleanOrderBo.CleanOrderBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -73,4 +75,5 @@ public interface ICleanOrderService {
* @return
*/
int assign(CleanOrderBo bo);
List<TbRoomVo> getRoomList(@NotNull(message = "主键不能为空") Long residentUnitId);
}

View File

@@ -1,5 +1,7 @@
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.bo.cleanOrderBo.CleanBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
@@ -65,4 +67,6 @@ public interface ICleanService {
* @return 是否删除成功
*/
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
}

View File

@@ -17,6 +17,7 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.property.domain.*;
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.enums.ChargeStatusEnum;
import org.dromara.property.domain.vo.*;
@@ -31,9 +32,11 @@ import org.springframework.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.stream.Collectors;
/**
* 房屋收费Service业务层处理
@@ -89,15 +92,26 @@ public class CostHouseChargeServiceImpl implements ICostHouseChargeService {
LambdaQueryWrapper<CostHouseCharge> lqw = buildQueryWrapper(bo);
List<ResidentPerson> residentPeoplelist = residentPersonMapper.selectList();
Page<CostHouseChargeVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
result.getRecords().stream().forEach(s -> {
if (CollUtil.isNotEmpty(residentPeoplelist)) {
ResidentPerson residentPerson = residentPeoplelist.stream()
.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);
}
});
if (CollUtil.isNotEmpty(result.getRecords())) {
List<Long> itemIdList = result.getRecords().stream().map(vo -> vo.getCostItemsId()).distinct().collect(Collectors.toList());
List<CostItemsVo> itemsVos = costItemsMapper.selectVoByIds(itemIdList).stream().collect(Collectors.toList());
result.getRecords().stream().forEach(s -> {
if (CollUtil.isNotEmpty(residentPeoplelist)) {
ResidentPerson residentPerson = residentPeoplelist.stream()
.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);
}
@@ -110,16 +124,41 @@ public class CostHouseChargeServiceImpl implements ICostHouseChargeService {
@Override
public List<CostHouseChargeVo> queryList(CostHouseChargeBo 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) {
Map<String, Object> params = bo.getParams();
//查询费用 项目
LambdaQueryWrapper<CostHouseCharge> lqw = Wrappers.lambdaQuery();
lqw.orderByDesc(CostHouseCharge::getCreateTime)
.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.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(bo.getAmountReceivable() != null, CostHouseCharge::getAmountReceivable, bo.getAmountReceivable());
lqw.eq(bo.getStartTime() != null, CostHouseCharge::getStartTime, bo.getStartTime());
@@ -214,7 +253,8 @@ public class CostHouseChargeServiceImpl implements ICostHouseChargeService {
public Boolean updateByBo(CostHouseChargeBo bo) {
CostHouseCharge update = MapstructUtils.convert(bo, CostHouseCharge.class);
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;
}
@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;
}
}

View File

@@ -84,7 +84,7 @@ public class CostItemsServiceImpl implements ICostItemsService {
lqw.eq(StringUtils.isNotBlank(bo.getCostMark()), CostItems::getCostMark, bo.getCostMark());
lqw.eq(StringUtils.isNotBlank(bo.getPaymentType()), CostItems::getPaymentType, bo.getPaymentType());
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.getCurrencyDecimals()), CostItems::getCurrencyDecimals, bo.getCurrencyDecimals());
lqw.eq(StringUtils.isNotBlank(bo.getState()), CostItems::getState, bo.getState());

View File

@@ -14,10 +14,10 @@ import org.dromara.common.core.utils.MapstructUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.property.domain.Meet;
import org.dromara.property.domain.MeetAttachOrder;
import org.dromara.property.domain.MeetBooking;
import org.dromara.property.domain.*;
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.BigScreen.TodayMeetCountVo;
import org.dromara.property.domain.vo.residentVo.ResidentPersonVo;
@@ -53,6 +53,7 @@ public class MeetBookingServiceImpl implements IMeetBookingService {
private final TbRoomMapper roomMapper;
private final MeetMapper meetMapper;
private final ResidentUnitMapper residentUnitMapper;
private final CostHouseChargeMapper costHouseChargeMapper;
@DubboReference
private RemoteUserService remoteUserService;
@@ -279,9 +280,40 @@ public class MeetBookingServiceImpl implements IMeetBookingService {
public Boolean updateByBo(MeetBookingBo bo) {
MeetBooking update = MapstructUtils.convert(bo, MeetBooking.class);
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);
}
/**
* 保存前的数据校验
*/

View File

@@ -1,5 +1,7 @@
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 org.dromara.common.core.utils.MapstructUtils;
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 lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.property.domain.CostHouseCharge;
import org.dromara.property.domain.Meet;
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.residentVo.ResidentUnitVo;
import org.dromara.property.mapper.CostHouseChargeMapper;
import org.dromara.property.mapper.ResidentUnitMapper;
import org.dromara.property.service.IPlantsRentalOrderService;
import org.springframework.stereotype.Service;
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.service.IPlantsOrderChargeService;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import java.util.Collection;
@@ -37,7 +47,8 @@ import java.util.Collection;
public class PlantsOrderChargeServiceImpl implements IPlantsOrderChargeService {
private final PlantsOrderChargeMapper baseMapper;
private final ResidentUnitMapper residentUnitMapper;
private final CostHouseChargeMapper costHouseChargeMapper;
private final IPlantsRentalOrderService plantsRentalOrderService;
/**
* 查询绿植租赁-订单收费
@@ -52,6 +63,11 @@ public class PlantsOrderChargeServiceImpl implements IPlantsOrderChargeService {
PlantsRentalOrderVo orderVo = plantsRentalOrderService.queryById(orderChargeVo.getOrderId());
orderChargeVo.setRentalOrder(orderVo);
}
//查询入驻单位名称
if(ObjectUtil.isNotEmpty(orderChargeVo.getResidentUnitId())){
ResidentUnitVo residentUnitVo = residentUnitMapper.selectVoById(orderChargeVo.getResidentUnitId());
orderChargeVo.setResidentUnitText(ObjectUtil.isNotEmpty(residentUnitVo)?residentUnitVo.getName() : null);
}
return orderChargeVo;
}
@@ -118,10 +134,37 @@ public class PlantsOrderChargeServiceImpl implements IPlantsOrderChargeService {
boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId());
// 检查是否已存在关联的收费记录
boolean exists = costHouseChargeMapper.selectCount(
new LambdaQueryWrapper<CostHouseCharge>()
.eq(CostHouseCharge::getOrderId, bo.getId())
) > 0;
if (!exists) {
handleAddPay(add);
}
}
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);
}
/**
* 修改绿植租赁-订单收费
*

View File

@@ -1,6 +1,9 @@
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 lombok.RequiredArgsConstructor;
import org.dromara.common.core.exception.ServiceException;
import org.dromara.common.core.utils.MapstructUtils;
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.PlantsProductBo;
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.system.api.RemoteDictService;
import org.dromara.system.api.domain.vo.RemoteDictDataVo;
@@ -27,6 +33,7 @@ import org.dromara.property.mapper.PlantsRentalOrderMapper;
import java.time.YearMonth;
import java.util.*;
import java.util.stream.Collectors;
/**
* 绿植租赁-订单管理Service业务层处理
@@ -35,24 +42,27 @@ import java.util.*;
* @date 2025-06-30
*/
@Slf4j
@RequiredArgsConstructor
@Service
public class PlantsRentalOrderServiceImpl implements IPlantsRentalOrderService {
@Autowired
private PlantsRentalOrderMapper baseMapper;
private PlantsRentalOrderMapper baseMapper;
@Autowired
private RemoteDictService dictService;
private RemoteDictService dictService;
@Autowired
private IPlantsProductService productService;
private IPlantsProductService productService;
@Autowired
@Lazy
private IPlantsPlanProductService planProductService;
private IPlantsPlanProductService planProductService;
@Autowired
@Lazy
private IPlantsOrderMaintainService maintainService;
private IPlantsOrderMaintainService maintainService;
@Autowired
@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) {
PlantsRentalOrderVo orderVo = baseMapper.selectVoById(id);
ArrayList<PlantsProductVo> list = new ArrayList<>();
if("1".equals(orderVo.getRentalType())){
if ("1".equals(orderVo.getRentalType())) {
PlantsProductVo productVo = productService.queryById(orderVo.getProductId());
productVo.setPlanProNumber(orderVo.getProductNum());
list.add(productVo);
}else {
} else {
List<PlantsPlanProductVo> planProductVos = planProductService.queryPlanProductsInfo(orderVo.getPlanId());
for (PlantsPlanProductVo planProductVo : planProductVos) {
PlantsProductVo product = planProductVo.getProduct();
@@ -76,6 +86,12 @@ public class PlantsRentalOrderServiceImpl implements IPlantsRentalOrderService {
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);
return orderVo;
}
@@ -126,8 +142,8 @@ public class PlantsRentalOrderServiceImpl implements IPlantsRentalOrderService {
lqw.eq(bo.getIsRelet() != null, PlantsRentalOrder::getIsRelet, bo.getIsRelet());
lqw.eq(bo.getContractStatus() != null, PlantsRentalOrder::getContractStatus, bo.getContractStatus());
lqw.eq(bo.getSignTime() != null, PlantsRentalOrder::getSignTime, bo.getSignTime());
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.getProductIds()), PlantsRentalOrder::getProductId, bo.getProductIds());
lqw.in(CollectionUtils.isNotEmpty(bo.getPlanIds()), PlantsRentalOrder::getPlanId, bo.getPlanIds());
return lqw;
}
@@ -168,19 +184,19 @@ public class PlantsRentalOrderServiceImpl implements IPlantsRentalOrderService {
private void validEntityBeforeSave(PlantsRentalOrderBo bo) {
//租赁方式 1单点 2套餐
if ("1".equals(bo.getRentalType())) {
if (bo.getProductId() != null&&bo.getProductNum()!=null) {
if (bo.getProductId() != null && bo.getProductNum() != null) {
ArrayList<PlantsProductBo> products = new ArrayList<>();
PlantsProductBo plantsProduct = new PlantsProductBo(bo.getProductId(),bo.getProductNum());
PlantsProductBo plantsProduct = new PlantsProductBo(bo.getProductId(), bo.getProductNum());
products.add(plantsProduct);
productService.deductStock(products);
}else {
} else {
throw new ServiceException("租赁产品不能为空");
}
} else {
List<PlantsProductBo> productList = bo.getProductList();
if(CollectionUtils.isNotEmpty(productList)){
if (CollectionUtils.isNotEmpty(productList)) {
productService.deductStock(productList);
}else {
} else {
throw new ServiceException("租赁套餐不能为空");
}
}
@@ -204,28 +220,28 @@ public class PlantsRentalOrderServiceImpl implements IPlantsRentalOrderService {
PlantsOrderMaintainBo maintainBo = new PlantsOrderMaintainBo();
maintainBo.setOrderIds(ids.stream().toList());
List<PlantsOrderMaintainVo> maintainList = maintainService.queryList(maintainBo);
if(CollectionUtils.isNotEmpty(maintainList)||CollectionUtils.isNotEmpty(chargeList)){
throw new ServiceException("所选订单不可删除");
}else {
if (CollectionUtils.isNotEmpty(maintainList) || CollectionUtils.isNotEmpty(chargeList)) {
throw new ServiceException("所选订单不可删除");
} else {
//恢复产品库存
ArrayList<PlantsProductBo> productList = new ArrayList<>();
for (Long id : ids) {
PlantsRentalOrder order = baseMapper.selectById(id);
if("1".equals(order.getRentalType())){
if ("1".equals(order.getRentalType())) {
Long productId = order.getProductId();
Integer productNum = order.getProductNum();
productList.add(new PlantsProductBo(productId,productNum));
}else {
productList.add(new PlantsProductBo(productId, productNum));
} else {
Long planId = order.getPlanId();
List<PlantsPlanProductVo> planProductVos = planProductService.queryPlanProductsInfo(planId);
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);
if(!b){
if (!b) {
throw new ServiceException("删除订单失败。");
}
}
@@ -404,13 +420,29 @@ public class PlantsRentalOrderServiceImpl implements IPlantsRentalOrderService {
/**
* 统计下单客户总数
*
* @return
*/
@Override
public Map<String, Integer> countCustomers() {
Integer count= baseMapper.countDistinctCustomerName();
Integer count = baseMapper.countDistinctCustomerName();
Map<String, Integer> map = new HashMap<>();
map.put("count",count);
map.put("count", count);
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;
}
}

View File

@@ -2,6 +2,8 @@ package org.dromara.property.service.impl.cleanOrderImpl;
import cn.hutool.core.bean.BeanUtil;
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 com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
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.mybatis.core.page.PageQuery;
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.bo.CleanOrderRecordBo;
import org.dromara.property.domain.bo.cleanOrderBo.CleanOrderBo;
import org.dromara.property.domain.enums.WorkOrderStatusEnum;
import org.dromara.property.domain.vo.CleanOrderRecordVo;
import org.dromara.property.domain.enums.ChargeStatusEnum;
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.residentVo.ResidentUnitVo;
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.cleanOrderMapper.CleanMapper;
import org.dromara.property.mapper.cleanOrderMapper.CleanOrderMapper;
import org.dromara.property.mapper.cleanOrderMapper.CleanRelationMapper;
import org.dromara.property.mapper.cleanOrderMapper.CleanserverOrderMapper;
import org.dromara.property.service.ITbRoomService;
import org.dromara.property.service.cleanOrderService.ICleanOrderService;
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.transaction.annotation.Transactional;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.math.BigDecimal;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static org.springframework.beans.BeanUtils.copyProperties;
@@ -57,9 +60,11 @@ public class CleanOrderServiceImpl implements ICleanOrderService {
private final CleanserverOrderMapper cleanserverOrderMapper;
private final CleanMapper cleanMapper;
private final ResidentUnitMapper residentUnitMapper;
private final CleanRelationMapper cleanRelationMapper;
private final CostHouseChargeMapper costHouseChargeMapper;
private final TbRoomMapper roomMapper;
private final ITbRoomService roomService;
@DubboReference
private RemoteUserService remoteUserService;
@@ -82,7 +87,21 @@ public class CleanOrderServiceImpl implements ICleanOrderService {
// 根据cleanserver_order表中的所有记录取出所有的cleanId查询出clean表中的所有记录
List<Long> cleanIds = cleanserverOrderList.stream().map(CleanserverOrder::getCleanServerId).collect(Collectors.toList());
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集合中
List<Long> cleanserverOrderIds = cleanserverOrderList.stream().map(CleanserverOrder::getId).collect(Collectors.toList());
//将查询出的cleanserverOrderIds与clean_relation比较查出clean_relation表中的所有记录
@@ -113,11 +132,11 @@ public class CleanOrderServiceImpl implements ICleanOrderService {
// Page<CleanOrderVo> result = baseMapper.selectForPage(pageQuery.build(), lqw);
//List<Long> locationIdList = result.getRecords().stream().map(CleanOrderVo::getLocation).collect(Collectors.toList());
// Map<Long, String> longStringMap = roomMapper.queryRoomName(item.getLocation());
//找出符合条件的房间名称
result.getRecords().forEach(item -> {
String localName = roomMapper.queryRoomName(item.getLocation());
item.setLocationName(localName != null ? localName : "未知房间");
});
//找出符合条件的房间名称
result.getRecords().forEach(item -> {
String localName = roomMapper.queryRoomName(item.getLocation());
item.setLocationName(localName != null ? localName : "未知房间");
});
return TableDataInfo.build(result);
}
@@ -133,7 +152,7 @@ public class CleanOrderServiceImpl implements ICleanOrderService {
return baseMapper.selectVoList(lqw);
}
private LambdaQueryWrapper<CleanOrder>buildQueryWrapper(CleanOrderBo bo) {
private LambdaQueryWrapper<CleanOrder> buildQueryWrapper(CleanOrderBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<CleanOrder> lqw = Wrappers.lambdaQuery();
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.getPhone()), CleanOrder::getPhone, bo.getPhone());
//将lqw中的所有条件都封装到一个params对象中集合中
return lqw;
}
@@ -172,13 +189,15 @@ public class CleanOrderServiceImpl implements ICleanOrderService {
// CleanOrder add = MapstructUtils.convert(bo, CleanOrder.class);
CleanOrder add = new CleanOrder();
copyProperties(bo, add);
add.setStarTime(bo.getStarTime());
add.setEndTime(bo.getEndTime());
add.setIsUnbooking(NOTUNBOOKING);
boolean flag = baseMapper.insert(add) > 0;
if (flag){
if (flag) {
bo.setId(add.getId());
// validEntityBeforeSave(bo);
List<Clean> cleans = BeanUtil.copyToList(bo.getCleanList(), Clean.class);
cleanMapper.updateBatchById(cleans);
}
//取出clean_order表中的所有clean数据
@@ -208,8 +227,8 @@ public class CleanOrderServiceImpl implements ICleanOrderService {
CleanRelation cleanRelation = new CleanRelation();
cleanRelation.setCleanserverOrderId(cleanserverOrderIds.get(i));
cleanRelation.setCleanId(clean.getId());
cleanRelation.setAreas(clean.getArea());
cleanRelation.setSumPrice(clean.getPeices() * clean.getArea());
// cleanRelation.setAreas(clean.getArea());
cleanRelation.setSumPrice(bo.getSumPeices());
cleanRelationMapper.insert(cleanRelation);
i++;
}
@@ -227,16 +246,49 @@ public class CleanOrderServiceImpl implements ICleanOrderService {
@Transactional(rollbackFor = Exception.class)
public Boolean updateByBo(CleanOrderBo bo) {
CleanOrder update = MapstructUtils.convert(bo, CleanOrder.class);
// validEntityBeforeSave(update);
// validEntityBeforeSave(update);
update.setStarTime(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:应该删除中间表中的数据
return baseMapper.deleteByIds(ids) > 0;
}
/**
* 指派保洁订单
*
* @param bo
* @return
*/
@Override
@Transactional(rollbackFor = Exception.class)
public int assign(CleanOrderBo bo) {
CleanOrderRecord cleanOrderRecord= BeanUtil.copyProperties(bo.getCleanOrderRecord(), CleanOrderRecord.class);
CleanOrderRecord cleanOrderRecord = BeanUtil.copyProperties(bo.getCleanOrderRecord(), CleanOrderRecord.class);
cleanOrderRecord.setStatus("2");
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)
);
}
}

View File

@@ -9,6 +9,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.dromara.property.domain.vo.TbRoomVo;
import org.springframework.stereotype.Service;
import org.dromara.property.domain.bo.cleanOrderBo.CleanBo;
import org.dromara.property.domain.vo.cleanOrderVo.CleanVo;
@@ -135,4 +136,6 @@ public class CleanServiceImpl implements ICleanService {
}
return baseMapper.deleteByIds(ids) > 0;
}
}

View File

@@ -78,6 +78,11 @@ public class ResidentUnitServiceImpl implements IResidentUnitService {
Long num = personService.queryPersonCount(residentUnitVo.getId());
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;
}
@@ -92,6 +97,15 @@ public class ResidentUnitServiceImpl implements IResidentUnitService {
public TableDataInfo<ResidentUnitVo> queryPageList(ResidentUnitBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<ResidentUnit> lqw = buildQueryWrapper(bo);
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);
}