diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/Clean.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/Clean.java index 426bbb1..cd52932 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/Clean.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/Clean.java @@ -37,6 +37,11 @@ public class Clean extends TenantEntity { */ private String measure; + /** + * 保洁面积 + */ + private Long area; + /** * 计算方式 */ @@ -45,7 +50,12 @@ public class Clean extends TenantEntity { /** * 单价 */ - private String peices; + private Long peices; + + /** + * 总价 + */ + private Long sumPrices; /** * 保洁频率 diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/CleanOrder.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/CleanOrder.java index 42930aa..29c817f 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/CleanOrder.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/CleanOrder.java @@ -4,10 +4,13 @@ import org.dromara.common.tenant.core.TenantEntity; import com.baomidou.mybatisplus.annotation.*; import lombok.Data; import lombok.EqualsAndHashCode; + +import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; import java.io.Serial; +import java.util.List; /** * 保洁订单对象 clean_order @@ -37,7 +40,7 @@ public class CleanOrder extends TenantEntity { /** * 面积 */ - private String area; + private Long area; /** * 保洁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 @@ -114,5 +120,7 @@ public class CleanOrder extends TenantEntity { */ private String searchValue; +// private List cleanList; + } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/CleanRelation.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/CleanRelation.java new file mode 100644 index 0000000..62a4de8 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/CleanRelation.java @@ -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; +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CleanBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CleanBo.java index 4503fd0..30184a5 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CleanBo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CleanBo.java @@ -47,6 +47,11 @@ public class CleanBo extends BaseEntity { @NotBlank(message = "计量单位不能为空", groups = { AddGroup.class, EditGroup.class }) private String measure; + /** + * 保洁面积 + */ + private Long area; + /** * 计算方式 */ @@ -59,6 +64,11 @@ public class CleanBo extends BaseEntity { @NotBlank(message = "单价不能为空", groups = { AddGroup.class, EditGroup.class }) private String peices; + /** + * 总价 + */ + @NotBlank(message = "总价不能为空", groups = { AddGroup.class, EditGroup.class }) + private String sumPrices; /** * 保洁频率 */ diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CleanOrderBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CleanOrderBo.java index 7036d49..4d796f1 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CleanOrderBo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CleanOrderBo.java @@ -1,5 +1,6 @@ package org.dromara.property.domain.bo; +import org.dromara.property.domain.Clean; import org.dromara.property.domain.CleanOrder; import org.dromara.common.mybatis.core.domain.BaseEntity; import org.dromara.common.core.validate.AddGroup; @@ -8,6 +9,9 @@ import io.github.linpeilie.annotations.AutoMapper; import lombok.Data; import lombok.EqualsAndHashCode; import jakarta.validation.constraints.*; + +import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.Date; 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; /** * 位置 */ - @NotBlank(message = "位置不能为空", groups = { AddGroup.class, EditGroup.class }) +// @NotBlank(message = "位置不能为空", groups = { AddGroup.class, EditGroup.class }) private String location; /** * 面积 */ - private String area; + private Long area; /** * 保洁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; /** * 开始时间 */ - @NotNull(message = "开始时间不能为空", groups = { AddGroup.class, EditGroup.class }) - private Date starTime; + @NotBlank(message = "开始时间不能为空", groups = {AddGroup.class, EditGroup.class}) +// @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private String starTime; /** * 结束时间 */ - @NotNull(message = "结束时间不能为空", groups = { AddGroup.class, EditGroup.class }) - private Date endTime; + @NotBlank(message = "结束时间不能为空", groups = {AddGroup.class, EditGroup.class}) +// @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss") + private String endTime; /** * 单位id */ - @NotNull(message = "单位id不能为空", groups = { AddGroup.class, EditGroup.class }) + @NotNull(message = "单位id不能为空", groups = {AddGroup.class, EditGroup.class}) 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; /** * 联系电话 */ - @NotBlank(message = "联系电话不能为空", groups = { AddGroup.class, EditGroup.class }) + @NotBlank(message = "联系电话不能为空", groups = {AddGroup.class, EditGroup.class}) private String phone; /** @@ -110,5 +116,8 @@ public class CleanOrderBo extends BaseEntity { */ private int state; + @NotEmpty(message = "订单详情不能为空", groups = {AddGroup.class}) + private List cleanList; + } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CleanRelationBo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CleanRelationBo.java new file mode 100644 index 0000000..2840beb --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/bo/CleanRelationBo.java @@ -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; +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CleanOrderVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CleanOrderVo.java index 3d4c77e..0a8e2bd 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CleanOrderVo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CleanOrderVo.java @@ -47,7 +47,7 @@ public class CleanOrderVo implements Serializable { * 面积 */ @ExcelProperty(value = "面积") - private String area; + private Long area; /** * 保洁id diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CleanRelationVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CleanRelationVo.java new file mode 100644 index 0000000..d2a97d2 --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CleanRelationVo.java @@ -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; +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CleanVo.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CleanVo.java index 0ef362b..abc542e 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CleanVo.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/domain/vo/CleanVo.java @@ -1,5 +1,8 @@ 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 cn.idev.excel.annotation.ExcelIgnoreUnannotated; import cn.idev.excel.annotation.ExcelProperty; @@ -46,6 +49,11 @@ public class CleanVo implements Serializable { @ExcelProperty(value = "计量单位") private String measure; + /** + * 保洁面积 + */ + private Long area; + /** * 计算方式 */ @@ -58,6 +66,12 @@ public class CleanVo implements Serializable { @ExcelProperty(value = "单价") private String peices; + /** + * 总价 + */ + @NotBlank(message = "总价不能为空", groups = { AddGroup.class, EditGroup.class }) + private String sumPrices; + /** * 保洁频率 */ diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/CleanOrderMapper.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/CleanOrderMapper.java index 3bda884..26000e1 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/CleanOrderMapper.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/CleanOrderMapper.java @@ -1,5 +1,7 @@ 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.vo.CleanOrderVo; 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 { + Page selectForPage(Page build, LambdaQueryWrapper lqw); + +// int insertCleanOrder(CleanOrder add); } diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/CleanRelationMapper.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/CleanRelationMapper.java new file mode 100644 index 0000000..9e82ece --- /dev/null +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/mapper/CleanRelationMapper.java @@ -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 { + + @Insert("insert into clean_relation(id,clean_id, area, sum_prices) values(#{id},#{cleanId}, #{area}, #{sumPrices})") + void insertCleanRelation(CleanRelation cleanRelation); +} diff --git a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CleanOrderServiceImpl.java b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CleanOrderServiceImpl.java index d6b9a1e..3b71a9c 100644 --- a/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CleanOrderServiceImpl.java +++ b/ruoyi-modules/Property/src/main/java/org/dromara/property/service/impl/CleanOrderServiceImpl.java @@ -1,5 +1,6 @@ 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.mapper.Mapper; 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 lombok.RequiredArgsConstructor; 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.mapper.CleanMapper; +import org.dromara.property.mapper.CleanRelationMapper; import org.dromara.property.mapper.CleanserverOrderMapper; +import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; import org.dromara.property.domain.bo.CleanOrderBo; import org.dromara.property.domain.vo.CleanOrderVo; import org.dromara.property.domain.CleanOrder; import org.dromara.property.mapper.CleanOrderMapper; import org.dromara.property.service.ICleanOrderService; +import org.springframework.transaction.annotation.Transactional; import org.stringtemplate.v4.ST; +import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @@ -41,6 +49,10 @@ public class CleanOrderServiceImpl implements ICleanOrderService { private final CleanOrderMapper baseMapper; private final CleanserverOrderMapper cleanserverOrderMapper; + private final CleanMapper cleanMapper; + + private final CleanRelationMapper cleanRelationMapper; + /** * 查询保洁订单 * @@ -62,7 +74,7 @@ public class CleanOrderServiceImpl implements ICleanOrderService { @Override public TableDataInfo queryPageList(CleanOrderBo bo, PageQuery pageQuery) { LambdaQueryWrapper lqw = buildQueryWrapper(bo); - Page result = baseMapper.selectVoPage(pageQuery.build(), lqw); + Page result = baseMapper.selectForPage(pageQuery.build(), lqw); return TableDataInfo.build(result); } @@ -83,7 +95,7 @@ public class CleanOrderServiceImpl implements ICleanOrderService { LambdaQueryWrapper lqw = Wrappers.lambdaQuery(); lqw.orderByAsc(CleanOrder::getId); 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.like(StringUtils.isNotBlank(bo.getName()), CleanOrder::getName, bo.getName()); @@ -107,35 +119,74 @@ public class CleanOrderServiceImpl implements ICleanOrderService { * @param bo 保洁订单 * @return 是否新增成功 */ + @Transactional(rollbackFor = Exception.class) @Override 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); + BeanUtils.copyProperties(bo, add); + add.setStarTime(new DateTime(bo.getStarTime()).toLocalDateTime()); + add.setEndTime(new DateTime(bo.getEndTime()).toLocalDateTime()); + + boolean flag = baseMapper.insert(add) > 0; - if (flag) { - bo.setId(add.getId()); - ArrayList cleanserverOrders = new ArrayList<>(); - LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); - // 查询cleanserver_order表中的所有记录 - List 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()); -// CleanserverOrder convert = MapstructUtils.convert(cleanserverOrder, CleanserverOrder.class); - cleanserverOrders.add(cleanserverOrder); - } + + //向clean表中插入数据 + //判断clean表是否为空 + List cleanList = bo.getCleanList(); + if (!CollectionUtils.isEmpty(cleanList)) { + //不为空,循环插入clean表 + for (Clean clean : bo.getCleanList()) { + //向clean关联表中插入数据 + CleanRelation cleanRelation = new CleanRelation(); + cleanRelation.setCleanId(clean.getId()); + cleanRelation.setArea(clean.getArea()); + cleanRelation.setSumPrices(clean.getPeices() * clean.getArea()); + + cleanRelationMapper.insertCleanRelation(cleanRelation); } - - - cleanserverOrderMapper.insert(cleanserverOrders); - } + + + //通过cleanlist取出所有的cleanId + List 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 cleanserverOrders = new ArrayList<>(); +// LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); +// // 查询cleanserver_order表中的所有记录 +// List 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; } diff --git a/ruoyi-modules/Property/src/main/resources/mapper/Property/CleanOrderMapper.xml b/ruoyi-modules/Property/src/main/resources/mapper/Property/CleanOrderMapper.xml index 372d7e5..682c741 100644 --- a/ruoyi-modules/Property/src/main/resources/mapper/Property/CleanOrderMapper.xml +++ b/ruoyi-modules/Property/src/main/resources/mapper/Property/CleanOrderMapper.xml @@ -4,4 +4,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +