服务顾问通知客户取车前,判断项目价格、配件价格是否已填写

This commit is contained in:
xiaofajia 2024-11-16 15:37:58 +08:00
parent 01c781478e
commit 5da4a45e7d
3 changed files with 73 additions and 28 deletions

View File

@ -336,6 +336,19 @@ public class DlRepairTicketsController {
return CommonResult.ok(); return CommonResult.ok();
} }
/**
* 判断是否工单子表的任何一个类目没有价格或价格为0
*
* @param id 工单ID
* @author 小李
* @date 15:00 2024/11/16
**/
@GetMapping("/hasPrice")
@Operation(summary = "判断是否工单子表的任何一个类目没有价格或价格为0")
public CommonResult<?> hasPrice(@RequestParam("id")String id){
return success(dlRepairTicketsService.hasPrice(id));
}
/** /**
* 新增工单子项 * 新增工单子项
* *

View File

@ -243,4 +243,13 @@ public interface DlRepairTicketsService extends IService<DlRepairTickets> {
* @param respVO * @param respVO
**/ **/
void overOrder(DlRepairTicketsRespVO respVO); void overOrder(DlRepairTicketsRespVO respVO);
/**
* 判断是否工单子表的任何一个类目没有价格或价格为0
*
* @param id 工单ID
* @author 小李
* @date 15:00 2024/11/16
**/
Boolean hasPrice(String id);
} }

View File

@ -222,7 +222,6 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
// }); // });
// 门店信息 // 门店信息
Long deptId = SecurityFrameworkUtils.getLoginUserDeptId(); Long deptId = SecurityFrameworkUtils.getLoginUserDeptId();
DeptRespDTO dept = deptApi.getDept(deptId); DeptRespDTO dept = deptApi.getDept(deptId);
@ -256,7 +255,7 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
// 新增子表 // 新增子表
itemList.forEach(item -> { itemList.forEach(item -> {
item.setTicketId(ticketsRespVO.getId()); item.setTicketId(ticketsRespVO.getId());
if(null==item.getSaleId()){ if (null == item.getSaleId()) {
//默认销售人员是当前用户 //默认销售人员是当前用户
item.setSaleId(loginUser.getId()); item.setSaleId(loginUser.getId());
item.setSaleName(loginUser.getInfo().get("nickname")); item.setSaleName(loginUser.getInfo().get("nickname"));
@ -415,7 +414,7 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
// 作废维修工单 // 作废维修工单
DlRepairTickets tickets = new DlRepairTickets(); DlRepairTickets tickets = new DlRepairTickets();
tickets.setId(repairTicketsReqVO.getId()); tickets.setId(repairTicketsReqVO.getId());
if (ObjectUtil.isNotEmpty(repairTicketsReqVO.getRemark())){ if (ObjectUtil.isNotEmpty(repairTicketsReqVO.getRemark())) {
tickets.setRemark(repairTicketsReqVO.getRemark()); tickets.setRemark(repairTicketsReqVO.getRemark());
} }
tickets.setTicketsStatus("03"); tickets.setTicketsStatus("03");
@ -447,10 +446,10 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
// 更新工单 // 更新工单
// 在这里把工单的状态更新为已完成---需要判断如果是线上支付需要在支付回调更新 // 在这里把工单的状态更新为已完成---需要判断如果是线上支付需要在支付回调更新
if (!repairTicketsRespVO.getPayType().equals("01")){ if (!repairTicketsRespVO.getPayType().equals("01")) {
repairTicketsRespVO.setIsFinish("1"); repairTicketsRespVO.setIsFinish("1");
baseMapper.updateById(repairTicketsRespVO); baseMapper.updateById(repairTicketsRespVO);
}else { } else {
// 线下结账和签单挂账直接算已支付 // 线下结账和签单挂账直接算已支付
repairOrderInfo.setPayTime(LocalDateTime.now()); repairOrderInfo.setPayTime(LocalDateTime.now());
repairOrderInfo.setOrderStatus("1"); repairOrderInfo.setOrderStatus("1");
@ -852,7 +851,7 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
String userRoleCode = getUserRole(); String userRoleCode = getUserRole();
if (userRoleCode.equals(RepairRoleEnum.ADMIN.getCode())) { if (userRoleCode.equals(RepairRoleEnum.ADMIN.getCode())) {
//维修管理员看所有数据 //维修管理员看所有数据
}else if (userRoleCode.equals(RepairRoleEnum.WAREHOUSE.getCode())) { } else if (userRoleCode.equals(RepairRoleEnum.WAREHOUSE.getCode())) {
//仓管看到所有数据 //仓管看到所有数据
} else if (userRoleCode.equals(RepairRoleEnum.INSPECTION.getCode())) { } else if (userRoleCode.equals(RepairRoleEnum.INSPECTION.getCode())) {
//总检 //总检
@ -955,7 +954,7 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
**/ **/
@Override @Override
@DSTransactional @DSTransactional
public void updateTake(String id,String image) { public void updateTake(String id, String image) {
// 改变时看看是否已经被接了 // 改变时看看是否已经被接了
int update = baseMapper.update(new LambdaUpdateWrapper<DlRepairTickets>() int update = baseMapper.update(new LambdaUpdateWrapper<DlRepairTickets>()
.set(DlRepairTickets::getTicketsWorkStatus, TicketsWorkStatusEnum.RECEIVED.getCode()) .set(DlRepairTickets::getTicketsWorkStatus, TicketsWorkStatusEnum.RECEIVED.getCode())
@ -1007,16 +1006,16 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
String userRole = getUserRole(); String userRole = getUserRole();
if (userRole.equals(RepairRoleEnum.REPAIR_STAFF.getCode())) { if (userRole.equals(RepairRoleEnum.REPAIR_STAFF.getCode())) {
//指派施工施工项目中不包含选中人员处理 //指派施工施工项目中不包含选中人员处理
setTicketItem(reqVO.getId(),reqVO.getNowRepairId(),reqVO.getNowRepairName()); setTicketItem(reqVO.getId(), reqVO.getNowRepairId(), reqVO.getNowRepairName());
} }
//最后记录操作日志--指派施工--pull下来的逻辑 //最后记录操作日志--指派施工--pull下来的逻辑
String code = RecordTypeEnum.ZPSG.getCode(); String code = RecordTypeEnum.ZPSG.getCode();
String remark ="指派施工"; String remark = "指派施工";
// 总检 // 总检
if (userRole.equals(RepairRoleEnum.INSPECTION.getCode())){ if (userRole.equals(RepairRoleEnum.INSPECTION.getCode())) {
repairRecordsService.saveRepairRecord(reqVO.getId(), null, RecordTypeEnum.NFPG.getCode(), reqVO.getRemark(), reqVO.getImage()); repairRecordsService.saveRepairRecord(reqVO.getId(), null, RecordTypeEnum.NFPG.getCode(), reqVO.getRemark(), reqVO.getImage());
}else { } else {
// 其他 // 其他
//最后记录操作日志--指派施工 //最后记录操作日志--指派施工
repairRecordsService.saveRepairRecord(reqVO.getId(), null, code, remark, null); repairRecordsService.saveRepairRecord(reqVO.getId(), null, code, remark, null);
@ -1025,29 +1024,30 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
/** /**
* 指派施工施工项目中不包含选中人员处理 * 指派施工施工项目中不包含选中人员处理
* @author PQZ *
* @date 16:30 2024/11/13
* @param ticketId 工单id * @param ticketId 工单id
* @param nowRepairId 当前处理人id * @param nowRepairId 当前处理人id
* @param nowRepairName 当前处理人名称 * @param nowRepairName 当前处理人名称
* @author PQZ
* @date 16:30 2024/11/13
**/ **/
private void setTicketItem(String ticketId,Long nowRepairId,String nowRepairName){ private void setTicketItem(String ticketId, Long nowRepairId, String nowRepairName) {
//查询所有维修工 //查询所有维修工
List<RepairWorker> list = repairWorkerService.list(); List<RepairWorker> list = repairWorkerService.list();
//查询当前工单下所有项目 //查询当前工单下所有项目
LambdaQueryWrapper<DlRepairTitem> lambdaQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<DlRepairTitem> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(DlRepairTitem::getTicketId,ticketId); lambdaQueryWrapper.eq(DlRepairTitem::getTicketId, ticketId);
List<DlRepairTitem> itemList = titemService.list(lambdaQueryWrapper); List<DlRepairTitem> itemList = titemService.list(lambdaQueryWrapper);
//过滤出不包括当前指派人的值 //过滤出不包括当前指派人的值
List<DlRepairTitem> filterList = itemList.stream().filter(item -> !item.getRepairNames().contains(nowRepairName)).collect(Collectors.toList()); List<DlRepairTitem> filterList = itemList.stream().filter(item -> !item.getRepairNames().contains(nowRepairName)).collect(Collectors.toList());
List<DlRepairTitem> saveList = new ArrayList<>(); List<DlRepairTitem> saveList = new ArrayList<>();
//当前处理人工作组 //当前处理人工作组
Map<Long,RepairWorker> workerMap = list.stream().collect(Collectors.toMap(RepairWorker::getUserId,worker -> worker)); Map<Long, RepairWorker> workerMap = list.stream().collect(Collectors.toMap(RepairWorker::getUserId, worker -> worker));
String workType = workerMap.get(nowRepairId).getWorkType(); String workType = workerMap.get(nowRepairId).getWorkType();
filterList.forEach(item -> { filterList.forEach(item -> {
//深拷贝 //深拷贝
DlRepairTitem saveItem = BeanUtils.toBean(item,DlRepairTitem.class); DlRepairTitem saveItem = BeanUtils.toBean(item, DlRepairTitem.class);
if (StringUtils.isNotEmpty(saveItem.getRepairIds())){ if (StringUtils.isNotEmpty(saveItem.getRepairIds())) {
//取出用户id //取出用户id
List<Long> repairIds = Arrays.stream(saveItem.getRepairIds().split(",")).map(Long::parseLong).collect(Collectors.toList()); List<Long> repairIds = Arrays.stream(saveItem.getRepairIds().split(",")).map(Long::parseLong).collect(Collectors.toList());
repairIds.forEach(idItem -> { repairIds.forEach(idItem -> {
@ -1062,7 +1062,7 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
} }
}); });
saveList.forEach(item -> { saveList.forEach(item -> {
String newRepairId = item.getRepairIds()+","+nowRepairId; String newRepairId = item.getRepairIds() + "," + nowRepairId;
String newRepairName = item.getRepairNames() + "," + nowRepairName; String newRepairName = item.getRepairNames() + "," + nowRepairName;
item.setRepairIds(newRepairId); item.setRepairIds(newRepairId);
item.setRepairNames(newRepairName); item.setRepairNames(newRepairName);
@ -1123,7 +1123,7 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
施工完成又分四种情况阶段完成完成并移交下一班组完成并移交总检完成工单其中部分完成同开始施工施工中的记录上传一致只上传不改变 施工完成又分四种情况阶段完成完成并移交下一班组完成并移交总检完成工单其中部分完成同开始施工施工中的记录上传一致只上传不改变
*/ */
// 消息生成 // 消息生成
String message = createMessage(tickets.getNowRepairName(), tickets.getCarNo(),null==titem?"":titem.getItemName(), respVO.getRecordType(), respVO.getFinishType(), respVO.getNextName()); String message = createMessage(tickets.getNowRepairName(), tickets.getCarNo(), null == titem ? "" : titem.getItemName(), respVO.getRecordType(), respVO.getFinishType(), respVO.getNextName());
// 通知服务顾问 // 通知服务顾问
// 如果员工完成了订单 // 如果员工完成了订单
if (RecordTypeEnum.SGWCZJ.getCode().equals(respVO.getRecordType()) && "03".equals(respVO.getFinishType())) { if (RecordTypeEnum.SGWCZJ.getCode().equals(respVO.getRecordType()) && "03".equals(respVO.getFinishType())) {
@ -1166,7 +1166,7 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
} }
//通知客户开始施工施工完成 //通知客户开始施工施工完成
if (respVO.getRecordType().equals(RecordTypeEnum.KSSG.getCode()) || respVO.getRecordType().equals(RecordTypeEnum.SGWCZJ.getCode())){ if (respVO.getRecordType().equals(RecordTypeEnum.KSSG.getCode()) || respVO.getRecordType().equals(RecordTypeEnum.SGWCZJ.getCode())) {
// 构建消息 // 构建消息
RepairWorker worker = repairWorkerService.getOne(new LambdaQueryWrapper<RepairWorker>().eq(RepairWorker::getUserId, SecurityFrameworkUtils.getLoginUserId()).last("limit 1")); RepairWorker worker = repairWorkerService.getOne(new LambdaQueryWrapper<RepairWorker>().eq(RepairWorker::getUserId, SecurityFrameworkUtils.getLoginUserId()).last("limit 1"));
List<DictDataRespDTO> dataList = dictDataApi.getDictDataList("repair_work_type"); List<DictDataRespDTO> dataList = dictDataApi.getDictDataList("repair_work_type");
@ -1468,6 +1468,29 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
repairRecordsService.saveRepairRecord(noticeCusVO.getId(), null, RecordTypeEnum.TZQC.getCode(), recordStr, null); repairRecordsService.saveRepairRecord(noticeCusVO.getId(), null, RecordTypeEnum.TZQC.getCode(), recordStr, null);
} }
/**
* 判断是否工单子表的任何一个类目没有价格或价格为0
*
* @param id 工单ID
* @author 小李
* @date 15:00 2024/11/16
**/
@Override
public Boolean hasPrice(String id) {
List<DlRepairTitem> titems = titemService.list(new LambdaQueryWrapper<DlRepairTitem>().in(DlRepairTitem::getTicketId, id));
for (DlRepairTitem item : titems) {
// 如果有为空的直接报错
if (ObjectUtil.isEmpty(item.getItemPrice())) {
throw exception0(500, "工单中有项目或配件没有设置价格,请服务顾问填写项目价格,仓库填写配件价格");
}
// 如果有为0的那就提示让操作人选择
if (item.getItemPrice().equals(new BigDecimal("0.00"))){
return false;
}
}
return true;
}
/** /**
* 重新计算工单的一些数值子表也要重新计算 * 重新计算工单的一些数值子表也要重新计算
* *
@ -1714,7 +1737,7 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
.set(DlRepairTickets::getTicketsWorkStatus, TicketsWorkStatusEnum.END.getCode()) .set(DlRepairTickets::getTicketsWorkStatus, TicketsWorkStatusEnum.END.getCode())
.set(DlRepairTickets::getTicketsStatus, TicketsStatusEnum.OVER.getCode()) .set(DlRepairTickets::getTicketsStatus, TicketsStatusEnum.OVER.getCode())
//交车时才能把工单置为完成 //交车时才能把工单置为完成
.set(DlRepairTickets::getIsFinish,"1") .set(DlRepairTickets::getIsFinish, "1")
.eq(DlRepairTickets::getId, respVO.getId()) .eq(DlRepairTickets::getId, respVO.getId())
); );