Merge remote-tracking branch 'origin/master'
Some checks are pending
Gitea Actions Demo / Explore-Gitea-Actions (push) Waiting to run

This commit is contained in:
zcxlsm 2025-07-01 17:12:41 +08:00
commit baf9502b61
13 changed files with 300 additions and 40 deletions

View File

@ -37,6 +37,11 @@ public class Clean extends TenantEntity {
*/ */
private String measure; private String measure;
/**
* 保洁面积
*/
private Long area;
/** /**
* 计算方式 * 计算方式
*/ */
@ -45,7 +50,12 @@ public class Clean extends TenantEntity {
/** /**
* 单价 * 单价
*/ */
private String peices; private Long peices;
/**
* 总价
*/
private Long sumPrices;
/** /**
* 保洁频率 * 保洁频率

View File

@ -4,10 +4,13 @@ import org.dromara.common.tenant.core.TenantEntity;
import com.baomidou.mybatisplus.annotation.*; import com.baomidou.mybatisplus.annotation.*;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import java.time.LocalDateTime;
import java.util.Date; import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import java.io.Serial; import java.io.Serial;
import java.util.List;
/** /**
* 保洁订单对象 clean_order * 保洁订单对象 clean_order
@ -37,7 +40,7 @@ public class CleanOrder extends TenantEntity {
/** /**
* 面积 * 面积
*/ */
private String area; private Long area;
/** /**
* 保洁id * 保洁id
@ -67,12 +70,15 @@ public class CleanOrder extends TenantEntity {
/** /**
* 开始时间 * 开始时间
*/ */
private Date starTime; @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
private LocalDateTime starTime;
/** /**
* 结束时间 * 结束时间
*/ */
private Date endTime; @JsonFormat(shape = JsonFormat.Shape.STRING, pattern="yyyy-MM-dd HH:mm:ss")
private LocalDateTime endTime;
/** /**
* 单位id * 单位id
@ -114,5 +120,7 @@ public class CleanOrder extends TenantEntity {
*/ */
private String searchValue; private String searchValue;
// private List<Clean> cleanList;
} }

View File

@ -0,0 +1,41 @@
package org.dromara.property.domain;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.io.Serial;
/**
* 保洁详情关联表 clean_relation
*
* @author mocheng
* @date 2025-06-19
*/
@Data
@TableName("clean_order")
public class CleanRelation {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id")
private Long id;
/**
* 保洁id
*/
private Long cleanId;
/**
* 面积
*/
private Long area;
private Long sumPrices;
}

View File

@ -47,6 +47,11 @@ 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;
/**
* 保洁面积
*/
private Long area;
/** /**
* 计算方式 * 计算方式
*/ */
@ -59,6 +64,11 @@ public class CleanBo extends BaseEntity {
@NotBlank(message = "单价不能为空", groups = { AddGroup.class, EditGroup.class }) @NotBlank(message = "单价不能为空", groups = { AddGroup.class, EditGroup.class })
private String peices; private String peices;
/**
* 总价
*/
@NotBlank(message = "总价不能为空", groups = { AddGroup.class, EditGroup.class })
private String sumPrices;
/** /**
* 保洁频率 * 保洁频率
*/ */

View File

@ -1,5 +1,6 @@
package org.dromara.property.domain.bo; package org.dromara.property.domain.bo;
import org.dromara.property.domain.Clean;
import org.dromara.property.domain.CleanOrder; import org.dromara.property.domain.CleanOrder;
import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.AddGroup;
@ -8,6 +9,9 @@ import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data; import lombok.Data;
import lombok.EqualsAndHashCode; import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*; import jakarta.validation.constraints.*;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -27,19 +31,19 @@ public class CleanOrderBo extends BaseEntity {
/** /**
* 主键 * 主键
*/ */
@NotNull(message = "主键不能为空", groups = { EditGroup.class }) @NotNull(message = "主键不能为空", groups = {EditGroup.class})
private Long id; private Long id;
/** /**
* 位置 * 位置
*/ */
@NotBlank(message = "位置不能为空", groups = { AddGroup.class, EditGroup.class }) // @NotBlank(message = "位置不能为空", groups = { AddGroup.class, EditGroup.class })
private String location; private String location;
/** /**
* 面积 * 面积
*/ */
private String area; private Long area;
/** /**
* 保洁id * 保洁id
@ -66,25 +70,27 @@ public class CleanOrderBo extends BaseEntity {
/** /**
* 支付状态 * 支付状态
*/ */
@NotNull(message = "支付状态不能为空", groups = { AddGroup.class, EditGroup.class }) @NotNull(message = "支付状态不能为空", groups = {AddGroup.class, EditGroup.class})
private Long payState; private Long payState;
/** /**
* 开始时间 * 开始时间
*/ */
@NotNull(message = "开始时间不能为空", groups = { AddGroup.class, EditGroup.class }) @NotBlank(message = "开始时间不能为空", groups = {AddGroup.class, EditGroup.class})
private Date starTime; // @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private String starTime;
/** /**
* 结束时间 * 结束时间
*/ */
@NotNull(message = "结束时间不能为空", groups = { AddGroup.class, EditGroup.class }) @NotBlank(message = "结束时间不能为空", groups = {AddGroup.class, EditGroup.class})
private Date endTime; // @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private String endTime;
/** /**
* 单位id * 单位id
*/ */
@NotNull(message = "单位id不能为空", groups = { AddGroup.class, EditGroup.class }) @NotNull(message = "单位id不能为空", groups = {AddGroup.class, EditGroup.class})
private Long unitId; private Long unitId;
// /** // /**
@ -96,13 +102,13 @@ public class CleanOrderBo extends BaseEntity {
/** /**
* 联系人 * 联系人
*/ */
@NotBlank(message = "联系人不能为空", groups = { AddGroup.class, EditGroup.class }) @NotBlank(message = "联系人不能为空", groups = {AddGroup.class, EditGroup.class})
private String persion; private String persion;
/** /**
* 联系电话 * 联系电话
*/ */
@NotBlank(message = "联系电话不能为空", groups = { AddGroup.class, EditGroup.class }) @NotBlank(message = "联系电话不能为空", groups = {AddGroup.class, EditGroup.class})
private String phone; private String phone;
/** /**
@ -110,5 +116,8 @@ public class CleanOrderBo extends BaseEntity {
*/ */
private int state; private int state;
@NotEmpty(message = "订单详情不能为空", groups = {AddGroup.class})
private List<Clean> cleanList;
} }

View File

@ -0,0 +1,43 @@
package org.dromara.property.domain.bo;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.property.domain.Clean;
import java.io.Serial;
/**
* 保洁详情关联表 clean_relation
*
* @author mocheng
* @date 2025-06-19
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = Clean.class, reverseConvertGenerate = false)
public class CleanRelationBo extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id")
private Long id;
/**
* 保洁id
*/
private Long cleanId;
/**
* 面积
*/
private Long area;
}

View File

@ -47,7 +47,7 @@ public class CleanOrderVo implements Serializable {
* 面积 * 面积
*/ */
@ExcelProperty(value = "面积") @ExcelProperty(value = "面积")
private String area; private Long area;
/** /**
* 保洁id * 保洁id

View File

@ -0,0 +1,43 @@
package org.dromara.property.domain.vo;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.property.domain.Clean;
import java.io.Serial;
/**
* 保洁详情关联表 clean_relation
*
* @author mocheng
* @date 2025-06-19
*/
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = Clean.class, reverseConvertGenerate = false)
public class CleanRelationVo extends BaseEntity {
@Serial
private static final long serialVersionUID = 1L;
/**
* 主键
*/
@TableId(value = "id")
private Long id;
/**
* 保洁id
*/
private Long cleanId;
/**
* 面积
*/
private Long area;
}

View File

@ -1,5 +1,8 @@
package org.dromara.property.domain.vo; package org.dromara.property.domain.vo;
import jakarta.validation.constraints.NotBlank;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import org.dromara.property.domain.Clean; import org.dromara.property.domain.Clean;
import cn.idev.excel.annotation.ExcelIgnoreUnannotated; import cn.idev.excel.annotation.ExcelIgnoreUnannotated;
import cn.idev.excel.annotation.ExcelProperty; import cn.idev.excel.annotation.ExcelProperty;
@ -46,6 +49,11 @@ public class CleanVo implements Serializable {
@ExcelProperty(value = "计量单位") @ExcelProperty(value = "计量单位")
private String measure; private String measure;
/**
* 保洁面积
*/
private Long area;
/** /**
* 计算方式 * 计算方式
*/ */
@ -58,6 +66,12 @@ public class CleanVo implements Serializable {
@ExcelProperty(value = "单价") @ExcelProperty(value = "单价")
private String peices; private String peices;
/**
* 总价
*/
@NotBlank(message = "总价不能为空", groups = { AddGroup.class, EditGroup.class })
private String sumPrices;
/** /**
* 保洁频率 * 保洁频率
*/ */

View File

@ -1,5 +1,7 @@
package org.dromara.property.mapper; package org.dromara.property.mapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.dromara.property.domain.CleanOrder; import org.dromara.property.domain.CleanOrder;
import org.dromara.property.domain.vo.CleanOrderVo; import org.dromara.property.domain.vo.CleanOrderVo;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus; import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
@ -12,4 +14,7 @@ import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
*/ */
public interface CleanOrderMapper extends BaseMapperPlus<CleanOrder, CleanOrderVo> { public interface CleanOrderMapper extends BaseMapperPlus<CleanOrder, CleanOrderVo> {
Page<CleanOrderVo> selectForPage(Page<Object> build, LambdaQueryWrapper<CleanOrder> lqw);
// int insertCleanOrder(CleanOrder add);
} }

View File

@ -0,0 +1,18 @@
package org.dromara.property.mapper;
import org.apache.ibatis.annotations.Insert;
import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
import org.dromara.property.domain.CleanRelation;
import org.dromara.property.domain.vo.CleanRelationVo;
/**
* 保洁-保洁关系表Mapper接口
*
* @author mocheng
* @date 2025-07-01
*/
public interface CleanRelationMapper extends BaseMapperPlus<CleanRelation, CleanRelationVo> {
@Insert("insert into clean_relation(id,clean_id, area, sum_prices) values(#{id},#{cleanId}, #{area}, #{sumPrices})")
void insertCleanRelation(CleanRelation cleanRelation);
}

View File

@ -1,5 +1,6 @@
package org.dromara.property.service.impl; package org.dromara.property.service.impl;
import cn.hutool.core.date.DateTime;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.mapper.Mapper; import com.baomidou.mybatisplus.core.mapper.Mapper;
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
@ -12,16 +13,23 @@ 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.Clean;
import org.dromara.property.domain.CleanRelation;
import org.dromara.property.domain.CleanserverOrder; import org.dromara.property.domain.CleanserverOrder;
import org.dromara.property.mapper.CleanMapper;
import org.dromara.property.mapper.CleanRelationMapper;
import org.dromara.property.mapper.CleanserverOrderMapper; import org.dromara.property.mapper.CleanserverOrderMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.dromara.property.domain.bo.CleanOrderBo; import org.dromara.property.domain.bo.CleanOrderBo;
import org.dromara.property.domain.vo.CleanOrderVo; import org.dromara.property.domain.vo.CleanOrderVo;
import org.dromara.property.domain.CleanOrder; import org.dromara.property.domain.CleanOrder;
import org.dromara.property.mapper.CleanOrderMapper; import org.dromara.property.mapper.CleanOrderMapper;
import org.dromara.property.service.ICleanOrderService; import org.dromara.property.service.ICleanOrderService;
import org.springframework.transaction.annotation.Transactional;
import org.stringtemplate.v4.ST; import org.stringtemplate.v4.ST;
import java.time.LocalDateTime;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -41,6 +49,10 @@ public class CleanOrderServiceImpl implements ICleanOrderService {
private final CleanOrderMapper baseMapper; private final CleanOrderMapper baseMapper;
private final CleanserverOrderMapper cleanserverOrderMapper; private final CleanserverOrderMapper cleanserverOrderMapper;
private final CleanMapper cleanMapper;
private final CleanRelationMapper cleanRelationMapper;
/** /**
* 查询保洁订单 * 查询保洁订单
* *
@ -62,7 +74,7 @@ public class CleanOrderServiceImpl implements ICleanOrderService {
@Override @Override
public TableDataInfo<CleanOrderVo> queryPageList(CleanOrderBo bo, PageQuery pageQuery) { public TableDataInfo<CleanOrderVo> queryPageList(CleanOrderBo bo, PageQuery pageQuery) {
LambdaQueryWrapper<CleanOrder> lqw = buildQueryWrapper(bo); LambdaQueryWrapper<CleanOrder> lqw = buildQueryWrapper(bo);
Page<CleanOrderVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw); Page<CleanOrderVo> result = baseMapper.selectForPage(pageQuery.build(), lqw);
return TableDataInfo.build(result); return TableDataInfo.build(result);
} }
@ -83,7 +95,7 @@ public class CleanOrderServiceImpl implements ICleanOrderService {
LambdaQueryWrapper<CleanOrder> lqw = Wrappers.lambdaQuery(); LambdaQueryWrapper<CleanOrder> lqw = Wrappers.lambdaQuery();
lqw.orderByAsc(CleanOrder::getId); lqw.orderByAsc(CleanOrder::getId);
lqw.eq(StringUtils.isNotBlank(bo.getLocation()), CleanOrder::getLocation, bo.getLocation()); lqw.eq(StringUtils.isNotBlank(bo.getLocation()), CleanOrder::getLocation, bo.getLocation());
lqw.eq(StringUtils.isNotBlank(bo.getArea()), CleanOrder::getArea, bo.getArea()); // lqw.eq(StringUtils.isNotBlank(bo.getArea()), CleanOrder::getArea, bo.getArea());
// lqw.eq(bo.getCleanIds() != null, CleanOrder::getCleanId, bo.getCleanIds()); // lqw.eq(bo.getCleanIds() != null, CleanOrder::getCleanId, bo.getCleanIds());
// lqw.like(StringUtils.isNotBlank(bo.getName()), CleanOrder::getName, bo.getName()); // lqw.like(StringUtils.isNotBlank(bo.getName()), CleanOrder::getName, bo.getName());
@ -107,35 +119,74 @@ public class CleanOrderServiceImpl implements ICleanOrderService {
* @param bo 保洁订单 * @param bo 保洁订单
* @return 是否新增成功 * @return 是否新增成功
*/ */
@Transactional(rollbackFor = Exception.class)
@Override @Override
public Boolean insertByBo(CleanOrderBo bo) { public Boolean insertByBo(CleanOrderBo bo) {
CleanOrder add = MapstructUtils.convert(bo, CleanOrder.class); //向clean_order表中插入数据
// CleanOrder add = MapstructUtils.convert(bo, CleanOrder.class);
CleanOrder add = new CleanOrder();
validEntityBeforeSave(add); validEntityBeforeSave(add);
BeanUtils.copyProperties(bo, add);
add.setStarTime(new DateTime(bo.getStarTime()).toLocalDateTime());
add.setEndTime(new DateTime(bo.getEndTime()).toLocalDateTime());
boolean flag = baseMapper.insert(add) > 0; boolean flag = baseMapper.insert(add) > 0;
if (flag) {
bo.setId(add.getId()); //向clean表中插入数据
ArrayList<CleanserverOrder> cleanserverOrders = new ArrayList<>(); //判断clean表是否为空
LambdaQueryWrapper<CleanserverOrder> queryWrapper = new LambdaQueryWrapper<>(); List<Clean> cleanList = bo.getCleanList();
// 查询cleanserver_order表中的所有记录 if (!CollectionUtils.isEmpty(cleanList)) {
List<CleanserverOrder> cleanserverOrderList = cleanserverOrderMapper.selectList(queryWrapper); //不为空循环插入clean表
//判断是否有cleanserver表中的数据 for (Clean clean : bo.getCleanList()) {
if (!cleanserverOrderList.isEmpty()) { //向clean关联表中插入数据
// 循环插入cleanserver_order表 CleanRelation cleanRelation = new CleanRelation();
for (CleanserverOrder order : cleanserverOrderList) { cleanRelation.setCleanId(clean.getId());
Long cleanId = order.getCleanServerId(); cleanRelation.setArea(clean.getArea());
CleanserverOrder cleanserverOrder = new CleanserverOrder(); cleanRelation.setSumPrices(clean.getPeices() * clean.getArea());
cleanserverOrder.setCleanServerId(cleanId);
cleanserverOrder.setOrderId(add.getId()); cleanRelationMapper.insertCleanRelation(cleanRelation);
// CleanserverOrder convert = MapstructUtils.convert(cleanserverOrder, CleanserverOrder.class);
cleanserverOrders.add(cleanserverOrder);
}
} }
cleanserverOrderMapper.insert(cleanserverOrders);
} }
//通过cleanlist取出所有的cleanId
List<Long> cleanIds = cleanList.stream().map(Clean::getId).collect(Collectors.toList());
//向cleanserver_order表中插入数据
if (!CollectionUtils.isEmpty(cleanIds)) {
//循环插入cleanserver_order表
for (Long cleanId : cleanIds) {
CleanserverOrder cleanserverOrder = new CleanserverOrder();
cleanserverOrder.setCleanServerId(cleanId);
cleanserverOrder.setOrderId(add.getId());
cleanserverOrderMapper.insert(cleanserverOrder);
}
}
// //向中间表插入数据
// if (flag) {
// bo.setId(add.getId());
// ArrayList<CleanserverOrder> cleanserverOrders = new ArrayList<>();
// LambdaQueryWrapper<CleanserverOrder> queryWrapper = new LambdaQueryWrapper<>();
// // 查询cleanserver_order表中的所有记录
// List<CleanserverOrder> cleanserverOrderList = cleanserverOrderMapper.selectList(queryWrapper);
// //判断是否有cleanserver表中的数据
//// if (!cleanserverOrderList.isEmpty()) {
//// // 循环插入cleanserver_order表
//// for (CleanserverOrder order : cleanserverOrderList) {
//// Long cleanId = order.getCleanServerId();
//// CleanserverOrder cleanserverOrder = new CleanserverOrder();
//// cleanserverOrder.setCleanServerId(cleanId);
//// cleanserverOrder.setOrderId(add.getId());
//// cleanserverOrders.add(cleanserverOrder);
//// }
//// }
//
//
// cleanserverOrderMapper.insert(cleanserverOrders);
//
// }
return flag; return flag;
} }

View File

@ -4,4 +4,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.dromara.property.mapper.CleanOrderMapper"> <mapper namespace="org.dromara.property.mapper.CleanOrderMapper">
<select id="selectForPage" resultType="org.dromara.property.domain.vo.CleanOrderVo">
SELECT
co.*,
c.*
FROM
clean_order co
LEFT JOIN clean c ON co.clean_id = c.id
</select>
</mapper> </mapper>