服务顾问通知取车前的完成前的编辑工单
This commit is contained in:
parent
7ec5a905c5
commit
9ae8344f10
@ -308,5 +308,19 @@ public class DlRepairTicketsController {
|
||||
dlRepairTicketsService.noticeCus(noticeCusVO);
|
||||
return CommonResult.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增工单子项
|
||||
*
|
||||
* @author 小李
|
||||
* @date 19:59 2024/10/24
|
||||
* @param respVO 主要有两个参数,主表ID,itemList(这个需要前端处理成子表的对象能接收的数据)
|
||||
**/
|
||||
@PostMapping("/addItems")
|
||||
@Operation(summary = "新增工单子项")
|
||||
public CommonResult<?> addItems(@RequestBody DlRepairTicketsRespVO respVO) {
|
||||
dlRepairTicketsService.addItems(respVO);
|
||||
return CommonResult.ok();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -69,5 +69,45 @@ public class DlRepairTitemController {
|
||||
public CommonResult<?> updateRepairAndSale(@RequestBody DlRepairTitemReqVO dlRepairTitemReqVO){
|
||||
return success(dlRepairTitemService.updateRepairAndSale(dlRepairTitemReqVO));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查看单个维修子表的数据
|
||||
*
|
||||
* @author 小李
|
||||
* @param id 子表ID
|
||||
**/
|
||||
@GetMapping("/getById")
|
||||
@Operation(summary = "查看单个维修子表的数据")
|
||||
public CommonResult<?> getItemById(@RequestParam("id") String id){
|
||||
return success(dlRepairTitemService.getItemById(id));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改单个工单子项的内容
|
||||
*
|
||||
* @author 小李
|
||||
* @date 15:41 2024/10/24
|
||||
* @param dlRepairTitemReqVO 对象
|
||||
**/
|
||||
@PostMapping("/updateById")
|
||||
@Operation(summary = "修改单个工单子项的内容")
|
||||
public CommonResult<?> updateItemById(@RequestBody DlRepairTitemReqVO dlRepairTitemReqVO){
|
||||
dlRepairTitemService.updateItemById(dlRepairTitemReqVO);
|
||||
return CommonResult.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 维修工单单个子项
|
||||
*
|
||||
* @author 小李
|
||||
* @date 20:18 2024/10/24
|
||||
* @param id 工单子项ID
|
||||
**/
|
||||
@DeleteMapping("/removeById")
|
||||
@Operation(summary = "维修工单单个子项")
|
||||
public CommonResult<?> removeItemById(@RequestParam("id") String id){
|
||||
dlRepairTitemService.removeItemById(id);
|
||||
return CommonResult.ok();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -173,4 +173,22 @@ public interface DlRepairTicketsService extends IService<DlRepairTickets> {
|
||||
* @param noticeCusVO 请求对象
|
||||
**/
|
||||
void noticeCus(NoticeCusVO noticeCusVO);
|
||||
|
||||
/**
|
||||
* 重新计算工单的一些数值
|
||||
*
|
||||
* @author 小李
|
||||
* @date 15:47 2024/10/24
|
||||
* @param ticketId 工单ID
|
||||
**/
|
||||
boolean computeTicket(String ticketId);
|
||||
|
||||
/**
|
||||
* 新增工单子项
|
||||
*
|
||||
* @author 小李
|
||||
* @date 19:59 2024/10/24
|
||||
* @param respVO 主要有两个参数,主表ID,itemList(这个需要前端处理成子表的对象能接收的数据)
|
||||
**/
|
||||
void addItems(DlRepairTicketsRespVO respVO);
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package cn.iocoder.yudao.module.tickets.service;
|
||||
|
||||
import cn.iocoder.yudao.module.tickets.entity.DlRepairTitem;
|
||||
import cn.iocoder.yudao.module.tickets.vo.DlRepairTitemReqVO;
|
||||
import cn.iocoder.yudao.module.tickets.vo.DlRepairTitemRespVO;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
@ -41,4 +42,29 @@ public interface DlRepairTitemService extends IService<DlRepairTitem> {
|
||||
*/
|
||||
DlRepairTitem updateRepairAndSale(DlRepairTitem dlRepairTitem);
|
||||
|
||||
/**
|
||||
* 查看单个维修子表的数据
|
||||
*
|
||||
* @author 小李
|
||||
* @param id 子表ID
|
||||
**/
|
||||
DlRepairTitem getItemById(String id);
|
||||
|
||||
/**
|
||||
* 修改单个工单子项的内容
|
||||
*
|
||||
* @author 小李
|
||||
* @date 15:41 2024/10/24
|
||||
* @param dlRepairTitemReqVO 对象
|
||||
**/
|
||||
void updateItemById(DlRepairTitemReqVO dlRepairTitemReqVO);
|
||||
|
||||
/**
|
||||
* 维修工单单个子项
|
||||
*
|
||||
* @author 小李
|
||||
* @date 20:18 2024/10/24
|
||||
* @param id 工单子项ID
|
||||
**/
|
||||
void removeItemById(String id);
|
||||
}
|
||||
|
@ -804,6 +804,7 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
|
||||
, tickets.getCarNo(), type, start, end, noticeCusVO.getName(), noticeCusVO.getMobile()
|
||||
);
|
||||
// todo 小程序通知客户
|
||||
|
||||
// todo 短信通知客户
|
||||
// 记录日志
|
||||
String recordStr = noticeCusVO.getName()
|
||||
@ -816,6 +817,72 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
|
||||
+ "前来取车";
|
||||
repairRecordsService.saveRepairRecord(noticeCusVO.getId(), null, RecordTypeEnum.JSGD.getCode(), recordStr, null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 重新计算工单的一些数值
|
||||
*
|
||||
* @param ticketId 工单ID
|
||||
* @author 小李
|
||||
* @date 15:47 2024/10/24
|
||||
**/
|
||||
@Override
|
||||
public boolean computeTicket(String ticketId) {
|
||||
// 查子表
|
||||
List<DlRepairTitem> list = titemService.list(new LambdaQueryWrapper<DlRepairTitem>().eq(DlRepairTitem::getTicketId, ticketId));
|
||||
// 计算
|
||||
DlRepairTickets tickets = new DlRepairTickets();
|
||||
// 计算子项总数
|
||||
int count = list.stream().mapToInt(DlRepairTitem::getItemCount).sum();
|
||||
tickets.setId(ticketId);
|
||||
tickets.setCount(count);
|
||||
// 分类计算各自的总价和最终工单总价
|
||||
Map<String, List<DlRepairTitem>> map = list.stream().collect(Collectors.groupingBy(DlRepairTitem::getItemType));
|
||||
// 01项目,02,配件,03,其他
|
||||
tickets.setTotalPrice(BigDecimal.ZERO);
|
||||
map.forEach((k, v) -> {
|
||||
BigDecimal reduce = v.stream().map(DlRepairTitem::getItemMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||
tickets.setTotalPrice(tickets.getTotalPrice().add(reduce));
|
||||
if (k.equals("01")) {
|
||||
tickets.setProjectPrice(reduce);
|
||||
} else if (k.equals("02")) {
|
||||
tickets.setPartPrice(reduce);
|
||||
} else if (k.equals("03")) {
|
||||
tickets.setOtherPrice(reduce);
|
||||
}
|
||||
});
|
||||
return baseMapper.updateById(tickets) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增工单子项
|
||||
*
|
||||
* @author 小李
|
||||
* @date 19:59 2024/10/24
|
||||
* @param respVO 主要有两个参数,主表ID,itemList(这个需要前端处理成子表的对象能接收的数据)
|
||||
**/
|
||||
@Override
|
||||
@DSTransactional
|
||||
public void addItems(DlRepairTicketsRespVO respVO){
|
||||
// 先判断是否施工人员和销售人员是否都设置了
|
||||
respVO.getItemList().forEach(item -> {
|
||||
if (ObjectUtil.isEmpty(item.getRepairIds())){
|
||||
throw exception0(500, "施工人员尚未设置");
|
||||
}
|
||||
if (ObjectUtil.isEmpty(item.getSaleId())){
|
||||
throw exception0(500, "销售人员尚未设置");
|
||||
}
|
||||
});
|
||||
// 新增子表
|
||||
List<DlRepairTitem> itemList = respVO.getItemList();
|
||||
itemList.forEach(item -> item.setTicketId(respVO.getId()));
|
||||
titemService.saveBatch(itemList);
|
||||
|
||||
// 更新主表
|
||||
boolean flag = computeTicket(respVO.getId());
|
||||
if (!flag){
|
||||
throw exception0(500, "系统错误");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -2,16 +2,23 @@ package cn.iocoder.yudao.module.tickets.service.impl;
|
||||
|
||||
import cn.iocoder.yudao.module.tickets.entity.DlRepairTitem;
|
||||
import cn.iocoder.yudao.module.tickets.mapper.DlRepairTitemMapper;
|
||||
import cn.iocoder.yudao.module.tickets.service.DlRepairTicketsService;
|
||||
import cn.iocoder.yudao.module.tickets.service.DlRepairTitemService;
|
||||
import cn.iocoder.yudao.module.tickets.vo.DlRepairTitemReqVO;
|
||||
import cn.iocoder.yudao.module.tickets.vo.DlRepairTitemRespVO;
|
||||
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception0;
|
||||
|
||||
/**
|
||||
* 针对表【dl_repair_titem(维修工单子表)】的数据库操作Service实现
|
||||
*
|
||||
@ -22,6 +29,9 @@ import java.util.List;
|
||||
public class DlRepairTitemServiceImpl extends ServiceImpl<DlRepairTitemMapper, DlRepairTitem>
|
||||
implements DlRepairTitemService {
|
||||
|
||||
@Resource
|
||||
private DlRepairTicketsService repairTicketsService;
|
||||
|
||||
/**
|
||||
* 维修工单子表 分页
|
||||
*
|
||||
@ -60,6 +70,63 @@ public class DlRepairTitemServiceImpl extends ServiceImpl<DlRepairTitemMapper, D
|
||||
baseMapper.updateRepairAndSale(dlRepairTitem);
|
||||
return dlRepairTitem;
|
||||
}
|
||||
|
||||
/**
|
||||
* 查看单个维修子表的数据
|
||||
*
|
||||
* @author 小李
|
||||
* @param id 子表ID
|
||||
**/
|
||||
@Override
|
||||
public DlRepairTitem getItemById(String id){
|
||||
return baseMapper.selectById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改单个工单子项的内容
|
||||
*
|
||||
* @author 小李
|
||||
* @date 15:41 2024/10/24
|
||||
* @param dlRepairTitemReqVO 对象
|
||||
**/
|
||||
@Override
|
||||
@DSTransactional
|
||||
public void updateItemById(DlRepairTitemReqVO dlRepairTitemReqVO){
|
||||
// 更新工单子表
|
||||
DlRepairTitem titem = new DlRepairTitem();
|
||||
titem.setId(dlRepairTitemReqVO.getId());
|
||||
titem.setItemCount(dlRepairTitemReqVO.getItemCount());
|
||||
titem.setItemPrice(dlRepairTitemReqVO.getItemPrice());
|
||||
titem.setItemDiscount(dlRepairTitemReqVO.getItemDiscount());
|
||||
// 计算总价
|
||||
BigDecimal total = titem.getItemPrice().multiply(BigDecimal.valueOf(titem.getItemCount())).multiply(titem.getItemDiscount());
|
||||
titem.setItemMoney(total);
|
||||
baseMapper.updateById(titem);
|
||||
|
||||
// 重新计算工单的一些数值
|
||||
boolean flag = repairTicketsService.computeTicket(dlRepairTitemReqVO.getTicketId());
|
||||
if (!flag){
|
||||
throw exception0(500, "系统异常");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 维修工单单个子项
|
||||
*
|
||||
* @author 小李
|
||||
* @date 20:18 2024/10/24
|
||||
* @param id 工单子项ID
|
||||
**/
|
||||
@Override
|
||||
@DSTransactional
|
||||
public void removeItemById(String id){
|
||||
// 先查出来备用
|
||||
DlRepairTitem titem = baseMapper.selectById(id);
|
||||
// 删除数据
|
||||
baseMapper.deleteById(id);
|
||||
// 更新主表
|
||||
repairTicketsService.computeTicket(titem.getTicketId());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user