|
@@ -0,0 +1,95 @@
|
|
|
|
|
+package cn.iocoder.yudao.module.system.service.home;
|
|
|
|
|
+
|
|
|
|
|
+import cn.iocoder.yudao.framework.common.pojo.PageResult;
|
|
|
|
|
+import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
|
|
|
|
|
+import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
|
|
|
|
|
+import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
|
|
|
|
|
+import cn.iocoder.yudao.module.system.controller.admin.home.vo.HomeServiceOrderPageReqVO;
|
|
|
|
|
+import cn.iocoder.yudao.module.system.controller.admin.home.vo.HomeServiceOrderPageRespVO;
|
|
|
|
|
+import cn.iocoder.yudao.module.system.controller.admin.home.vo.HomeServiceOrderRespVO;
|
|
|
|
|
+import cn.iocoder.yudao.module.system.controller.admin.home.vo.HomeServiceOrderSaveReqVO;
|
|
|
|
|
+import cn.iocoder.yudao.module.system.dal.dataobject.home.HomeServiceOrderDO;
|
|
|
|
|
+import cn.iocoder.yudao.module.system.dal.dataobject.home.HomeServiceOrderItemDO;
|
|
|
|
|
+import cn.iocoder.yudao.module.system.dal.mysql.home.HomeServiceOrderItemMapper;
|
|
|
|
|
+import cn.iocoder.yudao.module.system.dal.mysql.home.HomeServiceOrderMapper;
|
|
|
|
|
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
+import org.springframework.validation.annotation.Validated;
|
|
|
|
|
+
|
|
|
|
|
+import javax.annotation.Resource;
|
|
|
|
|
+import java.util.List;
|
|
|
|
|
+
|
|
|
|
|
+@Service
|
|
|
|
|
+@Validated
|
|
|
|
|
+public class HomeServiceOrderServiceImpl implements HomeServiceOrderService {
|
|
|
|
|
+
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private HomeServiceOrderMapper homeServiceOrderMapper;
|
|
|
|
|
+ @Resource
|
|
|
|
|
+ private HomeServiceOrderItemMapper homeServiceOrderItemMapper;
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
|
+ public Long createHomeServiceOrder(HomeServiceOrderSaveReqVO createReqVO) {
|
|
|
|
|
+ HomeServiceOrderDO orderDO = BeanUtils.toBean(createReqVO, HomeServiceOrderDO.class);
|
|
|
|
|
+ homeServiceOrderMapper.insert(orderDO);
|
|
|
|
|
+ saveOrderItems(orderDO.getId(), createReqVO.getServiceItemIds(), orderDO.getTenantId());
|
|
|
|
|
+ return orderDO.getId();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
|
+ public void updateHomeServiceOrder(HomeServiceOrderSaveReqVO updateReqVO) {
|
|
|
|
|
+ HomeServiceOrderDO orderDO = BeanUtils.toBean(updateReqVO, HomeServiceOrderDO.class);
|
|
|
|
|
+ homeServiceOrderMapper.updateById(orderDO);
|
|
|
|
|
+ if (updateReqVO.getServiceItemIds() != null) {
|
|
|
|
|
+ homeServiceOrderItemMapper.delete(HomeServiceOrderItemDO::getHomeServiceOrderId, updateReqVO.getId());
|
|
|
|
|
+ saveOrderItems(updateReqVO.getId(), updateReqVO.getServiceItemIds(), updateReqVO.getTenantId());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
|
|
+ public void deleteHomeServiceOrder(Long id) {
|
|
|
|
|
+ homeServiceOrderItemMapper.delete(HomeServiceOrderItemDO::getHomeServiceOrderId, id);
|
|
|
|
|
+ homeServiceOrderMapper.deleteById(id);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public HomeServiceOrderRespVO getHomeServiceOrder(Long id) {
|
|
|
|
|
+ HomeServiceOrderDO orderDO = homeServiceOrderMapper.selectById(id);
|
|
|
|
|
+ if (orderDO == null) {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+ HomeServiceOrderRespVO respVO = BeanUtils.toBean(orderDO, HomeServiceOrderRespVO.class);
|
|
|
|
|
+ List<HomeServiceOrderItemDO> items = homeServiceOrderItemMapper.selectList(
|
|
|
|
|
+ new LambdaQueryWrapperX<HomeServiceOrderItemDO>()
|
|
|
|
|
+ .eq(HomeServiceOrderItemDO::getHomeServiceOrderId, id)
|
|
|
|
|
+ .orderByAsc(HomeServiceOrderItemDO::getId)
|
|
|
|
|
+ );
|
|
|
|
|
+ respVO.setServiceItemIds(CollectionUtils.convertList(items, HomeServiceOrderItemDO::getServiceItemId));
|
|
|
|
|
+ return respVO;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public PageResult<HomeServiceOrderPageRespVO> getHomeServiceOrderPage(HomeServiceOrderPageReqVO pageReqVO) {
|
|
|
|
|
+ Page<HomeServiceOrderPageRespVO> page = new Page<>(pageReqVO.getPageNo(), pageReqVO.getPageSize());
|
|
|
|
|
+ List<HomeServiceOrderPageRespVO> list = homeServiceOrderMapper.selectPageWithJoin(page, pageReqVO);
|
|
|
|
|
+ return new PageResult<>(list, page.getTotal());
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private void saveOrderItems(Long orderId, List<Long> serviceItemIds, Long tenantId) {
|
|
|
|
|
+ if (serviceItemIds == null || serviceItemIds.isEmpty()) {
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ List<HomeServiceOrderItemDO> itemDOs = CollectionUtils.convertList(serviceItemIds, itemId -> {
|
|
|
|
|
+ HomeServiceOrderItemDO itemDO = new HomeServiceOrderItemDO();
|
|
|
|
|
+ itemDO.setHomeServiceOrderId(orderId);
|
|
|
|
|
+ itemDO.setServiceItemId(itemId);
|
|
|
|
|
+ itemDO.setTenantId(tenantId);
|
|
|
|
|
+ return itemDO;
|
|
|
|
|
+ });
|
|
|
|
|
+ homeServiceOrderItemMapper.insertBatch(itemDOs);
|
|
|
|
|
+ }
|
|
|
|
|
+}
|