修改系列接口

This commit is contained in:
yan.y 2025-03-13 17:08:25 +08:00
parent 3ba58dc671
commit a982953513
13 changed files with 150 additions and 55 deletions

View File

@ -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<Long, Goods> GOODS_MAP = new HashMap<>();
public static final Map<Long, Car> CAR_MAP = new HashMap<>();
public static final Map<Long, CarUser> CAR_USER_MAP = new HashMap<>();
public static final Map<Long, PetBaseInfo> PET_BASE_INFO_MAP = new HashMap<>();
public static final Map<String, List<Goods>> PET_GOODS_MAP = new HashMap<>();
public static final List<ServiceAddrs> 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<Car> carList = carRepository.findAll();
CAR_MAP.clear();
CAR_MAP.putAll(carList.stream().collect(Collectors.toMap(Car::getId, car -> car)));
List<CarUser> 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<PetGoods> petGoodsList = petGoodsRepository.findAll();
Map<String, List<Goods>> petGoodsMap = new HashMap<>();
for (PetGoods petGoods : petGoodsList) {

View File

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

View File

@ -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() {
}

View File

@ -8,4 +8,7 @@ import com.linln.modules.system.repository.BaseRepository;
* @date 2024/04/29
*/
public interface CarOrderRepository extends BaseRepository<CarOrder, Long> {
CarOrder findFirstByOrderId(String orderId);
}

View File

@ -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<Pet, Long> {
public interface PetRepository extends BaseRepository<Pet, Long>, JpaSpecificationExecutor<Pet> {
List<Pet> findAllByUid(long uid);

View File

@ -43,6 +43,7 @@ public interface OrderMainService {
OrderMain save(OrderMain orderMain);
void dispatchOrder(String orderId, Long carId);
void updateCarOrder(String orderId, Long carId);
List<Car> getCars();

View File

@ -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<String> 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("</br>", userNames);
String carInfo = car.getCarNo() + "</br>" + name;
orderMain.setCarInfo(carInfo);
}
orderMain.setGoodsDiscountAmount(couponsOriginPrice * 10 - orderSubs.stream().map(OrderSub::getGoodsDiscountAmount).reduce(0, Integer::sum));
orderMain.setUserServiceAddr("姓名:" + userServiceAddr.getName() + "<br>联系电话:" + userServiceAddr.getMobile() + "<br>地址:" + 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<Car> getCars() {
return carRepository.findAll();

View File

@ -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<Pet> getPageList(Example<Pet> example) {
// 创建分页对象
PageRequest page = PageSort.pageRequest();
Page<Pet> pets = petsRepository.findAll(example, page);
Page<Pet> pets = petsRepository.findAll((Specification<Pet>) (root, query, cb) -> {
List<Predicate> 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<Pet> content = pets.getContent();
for (Pet pet : content) {
pet.setPetBaseInfo(InitLoadDataService.PET_BASE_INFO_MAP.get(pet.getPetId()));

View File

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

View File

@ -21,24 +21,32 @@
<div class="layui-form-item">
<label class="layui-form-label">订单服务时长</label>
<div class="layui-input-inline">
<input class="layui-input" type="text" name="projectionServiceTime"
<input class="layui-input" type="text" name="projectionServiceTime" disabled
th:value="${orderMain.projectionServiceTime}"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">服务时间</label>
<div class="layui-input-inline">
<input class="layui-input" type="text" name="serviceTime"
th:value="${orderMain.serviceTime}"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">详细地址信息</label>
<div class="layui-input-inline">
<input class="layui-input" type="text" name="addr" th:value="${orderMain.userServiceAddrInfo.addr}"/>
<input class="layui-input" type="text" name="addr" th:value="${orderMain.userServiceAddrInfo.addr}" disabled/>
<input type="hidden" name="addrId" th:value="${orderMain.userServiceAddrInfo.id}"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">服务时间</label>
<div class="layui-input-inline">
<input class="layui-input" id="serviceTime" type="text" name="serviceTime"
th:value="${orderMain.serviceTime}"/>
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">服务车辆</label>
<div class="layui-input-inline">
<select class="timo-search-select" id="carId" name="carId">
<option th:each="c,Car:${cars}" th:value="${c.id}" th:text="${c.carNo}"></option>
</select>
</div>
</div>
<div class="layui-form-item timo-finally">
<button class="layui-btn ajax-submit"><i class="fa fa-check-circle"></i> 保存</button>
<button class="layui-btn btn-secondary close-popup"><i class="fa fa-times-circle"></i> 关闭</button>
@ -47,4 +55,15 @@
</div>
<script th:replace="/common/template :: script"></script>
</body>
<script>
layui.use(['laydate'], function () {
var laydate = layui.laydate;
// 渲染
laydate.render({
elem: '#serviceTime',
type: 'datetime',
format: 'yyyy-MM-dd HH'
});
})
</script>
</html>

View File

@ -76,6 +76,7 @@
<th>服务时间</th>
<th>订单状态</th>
<th>派单状态</th>
<th>派单信息</th>
<th>地址信息</th>
<th>宠物信息</th>
<th>洗护时长</th>
@ -100,7 +101,7 @@
th:attr="data-url=@{'/orders/orderMain/toDispatchPage/'+${item.id}}" data-size="auto"
href="#">派单</a>
<a th:if="${item.orderStatus == 1}" class="ajax-get" data-msg="您是否确认取消订单" th:href="@{/orders/orderMain/orderCancel(ids=${item.id})}">取消订单</a>
<a class="open-popup" data-title="编辑订单"
<a class="open-popup" data-title="编辑"
th:attr="data-url=@{'/orders/orderMain/edit/'+${item.id}}" data-size="auto"
href="#">编辑</a>
<a th:if="${item.orderStatus == 3 || item.orderStatus == 4}" class="ajax-get" data-msg="您是否确认删除" th:href="@{/orders/orderMain/status/delete(ids=${item.id})}">删除</a>
@ -111,6 +112,7 @@
<td th:text="${item.serviceTime}">服务时间</td>
<td th:text="${#dicts.orderStatus(item.orderStatus)}">订单状态</td>
<td th:text="${#dicts.dispatchStatus(item.dispatchStatus)}">派单状态</td>
<td th:utext="${item.carInfo}">派单信息</td>
<td th:utext="${item.userServiceAddr}">地址信息</td>
<td th:utext="${item.petInfos}">宠物信息</td>
<td th:text="${item.projectionServiceTime}">洗护时长</td>

View File

@ -89,7 +89,9 @@
var laydate = layui.laydate;
// 渲染
laydate.render({
elem: '#birthday'
elem: '#birthday',
type: 'month',
format: 'MM'
});
})
</script>

View File

@ -74,43 +74,38 @@ public class UserServiceImpl implements UserService {
PageRequest page = PageSort.pageRequest(Sort.Direction.ASC);
// 使用Specification复杂查询
return userRepository.findAll(new Specification<User>(){
return userRepository.findAll((Specification<User>) (root, query, cb) -> {
List<Predicate> 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<Long> deptIn = new ArrayList<>();
deptIn.add(dept.getId());
List<Dept> deptList = deptService.getListByPidLikeOk(dept.getId());
deptList.forEach(item -> deptIn.add(item.getId()));
@Override
public Predicate toPredicate(Root<User> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
List<Predicate> 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<Long> deptIn = new ArrayList<>();
deptIn.add(dept.getId());
List<Dept> deptList = deptService.getListByPidLikeOk(dept.getId());
deptList.forEach(item -> deptIn.add(item.getId()));
Join<User, Dept> join = root.join("dept", JoinType.INNER);
CriteriaBuilder.In<Long> 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<User, Dept> join = root.join("dept", JoinType.INNER);
CriteriaBuilder.In<Long> 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);
}