From a982953513c1462f232240155ea291388f446fe1 Mon Sep 17 00:00:00 2001 From: "yan.y" Date: Thu, 13 Mar 2025 17:08:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=B3=BB=E5=88=97=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/config/InitLoadDataService.java | 15 +++++ .../controller/OrderMainController.java | 12 ++-- .../linln/admin/orders/domain/OrderMain.java | 4 ++ .../orders/repository/CarOrderRepository.java | 3 + .../orders/repository/PetRepository.java | 4 +- .../orders/service/OrderMainService.java | 1 + .../service/impl/OrderMainServiceImpl.java | 22 ++++++- .../users/service/impl/PetServiceImpl.java | 18 +++++- admin/src/main/resources/static/css/main.css | 18 ++++++ .../templates/orders/orderMain/add.html | 37 ++++++++--- .../templates/orders/orderMain/index.html | 4 +- .../resources/templates/users/pets/index.html | 4 +- .../system/service/impl/UserServiceImpl.java | 63 +++++++++---------- 13 files changed, 150 insertions(+), 55 deletions(-) diff --git a/admin/src/main/java/com/linln/admin/config/InitLoadDataService.java b/admin/src/main/java/com/linln/admin/config/InitLoadDataService.java index 2afc20a..dbaf9cf 100644 --- a/admin/src/main/java/com/linln/admin/config/InitLoadDataService.java +++ b/admin/src/main/java/com/linln/admin/config/InitLoadDataService.java @@ -4,6 +4,7 @@ import com.linln.admin.orders.domain.*; import com.linln.admin.orders.repository.*; import com.linln.admin.users.domain.UserCoupons; import com.linln.admin.users.repository.UsersCouponsRepository; +import com.linln.admin.users.repository.UsersRepository; import com.linln.common.enums.StatusEnum; import lombok.Data; import lombok.extern.slf4j.Slf4j; @@ -29,6 +30,8 @@ public class InitLoadDataService extends ApplicationAvailabilityBean { public static final Map GOODS_MAP = new HashMap<>(); public static final Map CAR_MAP = new HashMap<>(); + + public static final Map CAR_USER_MAP = new HashMap<>(); public static final Map PET_BASE_INFO_MAP = new HashMap<>(); public static final Map> PET_GOODS_MAP = new HashMap<>(); public static final List SERVICE_ADDRS = new ArrayList<>(); @@ -43,6 +46,12 @@ public class InitLoadDataService extends ApplicationAvailabilityBean { @Resource private CarRepository carRepository; + @Resource + private CarUserRepository carUserRepository; + + @Resource + private UsersRepository usersRepository; + @Resource private PetGoodsRepository petGoodsRepository; @@ -77,6 +86,12 @@ public class InitLoadDataService extends ApplicationAvailabilityBean { List carList = carRepository.findAll(); CAR_MAP.clear(); CAR_MAP.putAll(carList.stream().collect(Collectors.toMap(Car::getId, car -> car))); + List carUserList = carUserRepository.findAll(); + for (CarUser carUser : carUserList) { + carUser.setUsers(usersRepository.findById(carUser.getUid()).get()); + } + CAR_USER_MAP.clear(); + CAR_USER_MAP.putAll(carUserList.stream().collect(Collectors.toMap(CarUser::getId, carUser -> carUser))); List petGoodsList = petGoodsRepository.findAll(); Map> petGoodsMap = new HashMap<>(); for (PetGoods petGoods : petGoodsList) { diff --git a/admin/src/main/java/com/linln/admin/orders/controller/OrderMainController.java b/admin/src/main/java/com/linln/admin/orders/controller/OrderMainController.java index b91665d..03fbfb3 100644 --- a/admin/src/main/java/com/linln/admin/orders/controller/OrderMainController.java +++ b/admin/src/main/java/com/linln/admin/orders/controller/OrderMainController.java @@ -156,6 +156,8 @@ public class OrderMainController { @RequiresPermissions("orders:orderMain:edit") public String toEdit(@PathVariable("id") OrderMain orderMain, Model model) { orderMain = orderMainService.getById(orderMain.getId()); + List cars = orderMainService.getCars(); + model.addAttribute("cars", cars); model.addAttribute("orderMain", orderMain); return "/orders/orderMain/add"; } @@ -222,15 +224,13 @@ public class OrderMainController { @ResponseBody public ResultVo save(@Validated OrderMainValid valid, OrderMain orderMain) { // 复制保留无需修改的数据 - if (orderMain.getId() != null) { - OrderMain beOrderMain = orderMainService.getById(orderMain.getId()); - EntityBeanUtil.copyProperties(beOrderMain, orderMain); - } + OrderMain beOrderMain = orderMainService.getById(orderMain.getId()); if (StrUtil.isNotBlank(orderMain.getAddr())) { orderMainService.updateUserAddr(orderMain.getAddrId(), orderMain.getAddr()); } - // 保存数据 - orderMainService.save(orderMain); + beOrderMain.setServiceTime(orderMain.getServiceTime()); + orderMainService.save(beOrderMain); + orderMainService.updateCarOrder(orderMain.getOrderId(), orderMain.getCarId()); return ResultVoUtil.SAVE_SUCCESS; } diff --git a/admin/src/main/java/com/linln/admin/orders/domain/OrderMain.java b/admin/src/main/java/com/linln/admin/orders/domain/OrderMain.java index 5c0ed47..d033fff 100644 --- a/admin/src/main/java/com/linln/admin/orders/domain/OrderMain.java +++ b/admin/src/main/java/com/linln/admin/orders/domain/OrderMain.java @@ -109,9 +109,13 @@ public class OrderMain implements Serializable { @Transient private Long addrId; @Transient + private Long carId; + @Transient private String addr; @Transient private String payDj; + @Transient + private String carInfo; public OrderMain() { } diff --git a/admin/src/main/java/com/linln/admin/orders/repository/CarOrderRepository.java b/admin/src/main/java/com/linln/admin/orders/repository/CarOrderRepository.java index 8060143..018dc3d 100644 --- a/admin/src/main/java/com/linln/admin/orders/repository/CarOrderRepository.java +++ b/admin/src/main/java/com/linln/admin/orders/repository/CarOrderRepository.java @@ -8,4 +8,7 @@ import com.linln.modules.system.repository.BaseRepository; * @date 2024/04/29 */ public interface CarOrderRepository extends BaseRepository { + + CarOrder findFirstByOrderId(String orderId); + } \ No newline at end of file diff --git a/admin/src/main/java/com/linln/admin/orders/repository/PetRepository.java b/admin/src/main/java/com/linln/admin/orders/repository/PetRepository.java index 852de7f..f924e63 100644 --- a/admin/src/main/java/com/linln/admin/orders/repository/PetRepository.java +++ b/admin/src/main/java/com/linln/admin/orders/repository/PetRepository.java @@ -1,7 +1,9 @@ package com.linln.admin.orders.repository; import com.linln.admin.orders.domain.Pet; +import com.linln.modules.system.domain.User; import com.linln.modules.system.repository.BaseRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import java.util.List; @@ -9,7 +11,7 @@ import java.util.List; * @author gion * @date 2024/04/29 */ -public interface PetRepository extends BaseRepository { +public interface PetRepository extends BaseRepository, JpaSpecificationExecutor { List findAllByUid(long uid); diff --git a/admin/src/main/java/com/linln/admin/orders/service/OrderMainService.java b/admin/src/main/java/com/linln/admin/orders/service/OrderMainService.java index 6044a85..9e77923 100644 --- a/admin/src/main/java/com/linln/admin/orders/service/OrderMainService.java +++ b/admin/src/main/java/com/linln/admin/orders/service/OrderMainService.java @@ -43,6 +43,7 @@ public interface OrderMainService { OrderMain save(OrderMain orderMain); void dispatchOrder(String orderId, Long carId); + void updateCarOrder(String orderId, Long carId); List getCars(); diff --git a/admin/src/main/java/com/linln/admin/orders/service/impl/OrderMainServiceImpl.java b/admin/src/main/java/com/linln/admin/orders/service/impl/OrderMainServiceImpl.java index 69709a3..e131da9 100644 --- a/admin/src/main/java/com/linln/admin/orders/service/impl/OrderMainServiceImpl.java +++ b/admin/src/main/java/com/linln/admin/orders/service/impl/OrderMainServiceImpl.java @@ -184,7 +184,15 @@ public class OrderMainServiceImpl implements OrderMainService { } else { orderMain.setPayDj("未支付"); } - + //已派单 + if (orderMain.getDispatchStatus() == 1) { + CarOrder carOrder = carOrderRepository.findFirstByOrderId(orderMain.getOrderId()); + Car car = InitLoadDataService.CAR_MAP.get(carOrder.getCarId()); + List userNames = InitLoadDataService.CAR_USER_MAP.values().stream().filter(f -> f.getCarId().longValue() == car.getId().longValue()).collect(Collectors.toList()).stream().map(m -> m.getUsers().getNickName()).collect(Collectors.toList()); + String name = String.join("
", userNames); + String carInfo = car.getCarNo() + "
" + name; + orderMain.setCarInfo(carInfo); + } orderMain.setGoodsDiscountAmount(couponsOriginPrice * 10 - orderSubs.stream().map(OrderSub::getGoodsDiscountAmount).reduce(0, Integer::sum)); orderMain.setUserServiceAddr("姓名:" + userServiceAddr.getName() + "
联系电话:" + userServiceAddr.getMobile() + "
地址:" + userServiceAddr.getAddr()); } @@ -200,7 +208,10 @@ public class OrderMainServiceImpl implements OrderMainService { @Override public void dispatchOrder(String orderId, Long carId) { - CarOrder carOrder = new CarOrder(); + CarOrder carOrder = carOrderRepository.findFirstByOrderId(orderId); + if (carOrder == null) { + carOrder = new CarOrder(); + } carOrder.setCarId(carId); carOrder.setOrderId(orderId); carOrderRepository.save(carOrder); @@ -214,6 +225,13 @@ public class OrderMainServiceImpl implements OrderMainService { } } + @Override + public void updateCarOrder(String orderId, Long carId) { + CarOrder carOrder = carOrderRepository.findFirstByOrderId(orderId); + carOrder.setCarId(carId); + carOrderRepository.save(carOrder); + } + @Override public List getCars() { return carRepository.findAll(); diff --git a/admin/src/main/java/com/linln/admin/users/service/impl/PetServiceImpl.java b/admin/src/main/java/com/linln/admin/users/service/impl/PetServiceImpl.java index 13fa583..bdbff03 100644 --- a/admin/src/main/java/com/linln/admin/users/service/impl/PetServiceImpl.java +++ b/admin/src/main/java/com/linln/admin/users/service/impl/PetServiceImpl.java @@ -1,5 +1,6 @@ package com.linln.admin.users.service.impl; +import cn.hutool.core.util.StrUtil; import com.linln.admin.config.InitLoadDataService; import com.linln.admin.orders.domain.Pet; import com.linln.admin.orders.repository.PetRepository; @@ -9,10 +10,13 @@ import com.linln.common.enums.StatusEnum; import org.springframework.data.domain.Example; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; +import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import javax.persistence.criteria.Predicate; +import java.util.ArrayList; import java.util.List; /** @@ -43,7 +47,19 @@ public class PetServiceImpl implements PetService { public Page getPageList(Example example) { // 创建分页对象 PageRequest page = PageSort.pageRequest(); - Page pets = petsRepository.findAll(example, page); + Page pets = petsRepository.findAll((Specification) (root, query, cb) -> { + List preList = new ArrayList<>(); + if (example.getProbe().getUid() != null) { + preList.add(cb.equal(root.get("uid").as(Long.class), example.getProbe().getUid())); + } + + if (StrUtil.isNotBlank(example.getProbe().getBirthday())) { + preList.add(cb.like(root.get("birthday").as(String.class), "%-" + example.getProbe().getBirthday() + "-%")); + } + Predicate[] pres = new Predicate[preList.size()]; + return query.where(preList.toArray(pres)).getRestriction(); + }, page); + List content = pets.getContent(); for (Pet pet : content) { pet.setPetBaseInfo(InitLoadDataService.PET_BASE_INFO_MAP.get(pet.getPetId())); diff --git a/admin/src/main/resources/static/css/main.css b/admin/src/main/resources/static/css/main.css index 96d333e..907c1c2 100644 --- a/admin/src/main/resources/static/css/main.css +++ b/admin/src/main/resources/static/css/main.css @@ -478,7 +478,25 @@ a{ left: 0; } } +::-webkit-scrollbar { + width: 10px; /* 滚动条宽度 */ + height: 10px; +} +::-webkit-scrollbar-track { + background: #eee; + border-radius: 6px; +} + +::-webkit-scrollbar-thumb { + background: #666; + border-radius: 6px; + cursor: pointer; +} + +::-webkit-scrollbar-thumb:hover { + background: #999; +} /* 页面通用样式 */ .timo-layout-page{ background-color: #eeeeee; diff --git a/admin/src/main/resources/templates/orders/orderMain/add.html b/admin/src/main/resources/templates/orders/orderMain/add.html index 95a2cd2..3782ff7 100644 --- a/admin/src/main/resources/templates/orders/orderMain/add.html +++ b/admin/src/main/resources/templates/orders/orderMain/add.html @@ -21,24 +21,32 @@
-
-
- -
- -
-
- +
+
+ +
+ +
+
+
+ +
+ +
+
@@ -47,4 +55,15 @@
+ \ No newline at end of file diff --git a/admin/src/main/resources/templates/orders/orderMain/index.html b/admin/src/main/resources/templates/orders/orderMain/index.html index 5f2da8d..f978d95 100644 --- a/admin/src/main/resources/templates/orders/orderMain/index.html +++ b/admin/src/main/resources/templates/orders/orderMain/index.html @@ -76,6 +76,7 @@ 服务时间 订单状态 派单状态 + 派单信息 地址信息 宠物信息 洗护时长 @@ -100,7 +101,7 @@ th:attr="data-url=@{'/orders/orderMain/toDispatchPage/'+${item.id}}" data-size="auto" href="#">派单 取消订单 - 编辑 删除 @@ -111,6 +112,7 @@ 服务时间 订单状态 派单状态 + 派单信息 地址信息 宠物信息 洗护时长 diff --git a/admin/src/main/resources/templates/users/pets/index.html b/admin/src/main/resources/templates/users/pets/index.html index ea66e56..0e7d6c4 100644 --- a/admin/src/main/resources/templates/users/pets/index.html +++ b/admin/src/main/resources/templates/users/pets/index.html @@ -89,7 +89,9 @@ var laydate = layui.laydate; // 渲染 laydate.render({ - elem: '#birthday' + elem: '#birthday', + type: 'month', + format: 'MM' }); }) diff --git a/modules/system/src/main/java/com/linln/modules/system/service/impl/UserServiceImpl.java b/modules/system/src/main/java/com/linln/modules/system/service/impl/UserServiceImpl.java index c7240b2..d36ab73 100644 --- a/modules/system/src/main/java/com/linln/modules/system/service/impl/UserServiceImpl.java +++ b/modules/system/src/main/java/com/linln/modules/system/service/impl/UserServiceImpl.java @@ -74,43 +74,38 @@ public class UserServiceImpl implements UserService { PageRequest page = PageSort.pageRequest(Sort.Direction.ASC); // 使用Specification复杂查询 - return userRepository.findAll(new Specification(){ + return userRepository.findAll((Specification) (root, query, cb) -> { + List preList = new ArrayList<>(); + if(user.getId() != null){ + preList.add(cb.equal(root.get("id").as(Long.class), user.getId())); + } + if(user.getUsername() != null){ + preList.add(cb.equal(root.get("username").as(String.class), user.getUsername())); + } + if(user.getNickname() != null){ + preList.add(cb.like(root.get("nickname").as(String.class), "%"+ user.getNickname() + "%")); + } + if(user.getDept() != null){ + // 联级查询部门 + Dept dept = user.getDept(); + List deptIn = new ArrayList<>(); + deptIn.add(dept.getId()); + List deptList = deptService.getListByPidLikeOk(dept.getId()); + deptList.forEach(item -> deptIn.add(item.getId())); - @Override - public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder cb) { - List preList = new ArrayList<>(); - if(user.getId() != null){ - preList.add(cb.equal(root.get("id").as(Long.class), user.getId())); - } - if(user.getUsername() != null){ - preList.add(cb.equal(root.get("username").as(String.class), user.getUsername())); - } - if(user.getNickname() != null){ - preList.add(cb.like(root.get("nickname").as(String.class), "%"+ user.getNickname() + "%")); - } - if(user.getDept() != null){ - // 联级查询部门 - Dept dept = user.getDept(); - List deptIn = new ArrayList<>(); - deptIn.add(dept.getId()); - List deptList = deptService.getListByPidLikeOk(dept.getId()); - deptList.forEach(item -> deptIn.add(item.getId())); - - Join join = root.join("dept", JoinType.INNER); - CriteriaBuilder.In in = cb.in(join.get("id").as(Long.class)); - deptIn.forEach(in::value); - preList.add(in); - } - - // 数据状态 - if(user.getStatus() != null){ - preList.add(cb.equal(root.get("status").as(Byte.class), user.getStatus())); - } - - Predicate[] pres = new Predicate[preList.size()]; - return query.where(preList.toArray(pres)).getRestriction(); + Join join = root.join("dept", JoinType.INNER); + CriteriaBuilder.In in = cb.in(join.get("id").as(Long.class)); + deptIn.forEach(in::value); + preList.add(in); } + // 数据状态 + if(user.getStatus() != null){ + preList.add(cb.equal(root.get("status").as(Byte.class), user.getStatus())); + } + + Predicate[] pres = new Predicate[preList.size()]; + return query.where(preList.toArray(pres)).getRestriction(); }, page); }