查看工单详情融合B单

This commit is contained in:
xuyuncong 2025-11-14 17:51:58 +08:00
parent 26e5fe05f4
commit 461b584711
5 changed files with 165 additions and 10 deletions

View File

@ -87,6 +87,15 @@ public interface RepairWorkerService extends IService<RepairWorker> {
**/ **/
void sentMessage(String systemCode,Long userId,String text); void sentMessage(String systemCode,Long userId,String text);
/**
* 向指定用户发送消息
* @author PQZ
* @date 16:27 2024/10/18
* @param userId 用户id
* @param text 消息通知内容
**/
void sentMessage(String systemCode,String userId,String text);
/** /**
* 向指定用户发送消息(用户非员工) * 向指定用户发送消息(用户非员工)
* *

View File

@ -229,6 +229,24 @@ public class RepairWorkerServiceImpl extends ServiceImpl<RepairWorkerMapper, Rep
} }
} }
/**
* 向指定用户发送消息
*
* @param userIds 用户id
* @param text 消息通知内容
* @author PQZ
* @date 16:27 2024/10/18
**/
@Override
public void sentMessage(String systemCode,String userIds, String text) {
//将userIds 转换成数组
String[] userIdArray = userIds.split(",");
for (String userId : userIdArray) {
sentMessage(systemCode, Long.parseLong(userId), text);
}
}
/** /**
* 向指定用户发送消息(用户非员工) * 向指定用户发送消息(用户非员工)
* *

View File

@ -474,7 +474,6 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
List<DlRepairTitem> itemList = titemService.list(new LambdaQueryWrapper<DlRepairTitem>().eq(DlRepairTitem::getTicketId, id)); List<DlRepairTitem> itemList = titemService.list(new LambdaQueryWrapper<DlRepairTitem>().eq(DlRepairTitem::getTicketId, id));
List<DlRepairTitemReqVO> items = itemList.stream().map(item -> BeanUtil.toBean(item, DlRepairTitemReqVO.class)).collect(Collectors.toList()); List<DlRepairTitemReqVO> items = itemList.stream().map(item -> BeanUtil.toBean(item, DlRepairTitemReqVO.class)).collect(Collectors.toList());
//处理项目 取项目 //处理项目 取项目
List<DlRepairTitemReqVO> projects = items.stream().filter(item -> item.getItemType().equals("01")).collect(Collectors.toList()); List<DlRepairTitemReqVO> projects = items.stream().filter(item -> item.getItemType().equals("01")).collect(Collectors.toList());
//pc原逻辑 //pc原逻辑
@ -484,6 +483,28 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
items.forEach(item -> repairProjects.stream().filter(i -> i.getId().equals(item.getProjectId())).findFirst().ifPresent(item::setProject)); items.forEach(item -> repairProjects.stream().filter(i -> i.getId().equals(item.getProjectId())).findFirst().ifPresent(item::setProject));
} }
result.setProjects(projects); result.setProjects(projects);
/*查询绑定B单信息*/
// 查绑定B单信息
List<DlRepairTickets> BTickets = baseMapper.selectList(Wrappers.<DlRepairTickets>lambdaQuery()
.eq(DlRepairTickets::getParentTicketId, id));
List<String> bIds = BTickets.stream().map(DlRepairTickets::getId).collect(Collectors.toList());
// 查询B子表
List<DlRepairTitemReqVO> BItems = new ArrayList<>();
if (CollectionUtil.isNotEmpty(bIds)){
List<DlRepairTitem> BItemList = titemService.list(new LambdaQueryWrapper<DlRepairTitem>().in(DlRepairTitem::getTicketId, bIds));
BItems = BItemList.stream().map(item -> BeanUtil.toBean(item, DlRepairTitemReqVO.class)).collect(Collectors.toList());
//处理项目 取项目
List<DlRepairTitemReqVO> BProject = BItems.stream().filter(item -> item.getItemType().equals("01")).collect(Collectors.toList());
if (CollectionUtil.isNotEmpty(BProject)) {
Set<String> ids = BProject.stream().map(DlRepairTitemReqVO::getProjectId).collect(Collectors.toSet());
List<RepairProject> repairProjects = projectService.listByIds(ids);
BItems.forEach(item -> repairProjects.stream().filter(i -> i.getId().equals(item.getProjectId())).findFirst().ifPresent(item::setProject));
}
result.setBProjects(BProject);}
if (ifApp) { if (ifApp) {
//app新增逻辑 //app新增逻辑
if (CollectionUtil.isNotEmpty(projects)) { if (CollectionUtil.isNotEmpty(projects)) {
@ -573,6 +594,21 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
}); });
} }
result.setWares(wares); result.setWares(wares);
// 取出B单配件
List<DlRepairTitemReqVO> BWares = BItems.stream().filter(item -> item.getItemType().equals("02")).collect(Collectors.toList());
if (CollectionUtil.isNotEmpty(BWares)) {
// 单位字典
List<DictDataRespDTO> recordTypeList = dictDataApi.getDictDataList(DICT_REPAIR_UNIT);
Map<String, String> unitMap = recordTypeList.stream().collect(Collectors.toMap(DictDataRespDTO::getValue, DictDataRespDTO::getLabel));
Set<String> ids = BWares.stream().map(DlRepairTitemReqVO::getPartId).collect(Collectors.toSet());
List<RepairWares> repairWares = waresService.listByIds(ids);
BItems.forEach(item -> {
repairWares.stream().filter(i -> i.getId().equals(item.getPartId())).findFirst().ifPresent(item::setWare);
item.setUnitText(unitMap.get(item.getItemUnit()));
});
}
result.setBWares(BWares);
} }
// 取附加 // 取附加
List<DlRepairTitemReqVO> others = items.stream().filter(item -> item.getItemType().equals("03")).collect(Collectors.toList()); List<DlRepairTitemReqVO> others = items.stream().filter(item -> item.getItemType().equals("03")).collect(Collectors.toList());
@ -581,7 +617,16 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
List<DlRepairOther> dlRepairOthers = otherService.listByIds(ids); List<DlRepairOther> dlRepairOthers = otherService.listByIds(ids);
items.forEach(item -> dlRepairOthers.stream().filter(i -> i.getId().equals(item.getOtherId())).findFirst().ifPresent(item::setOther)); items.forEach(item -> dlRepairOthers.stream().filter(i -> i.getId().equals(item.getOtherId())).findFirst().ifPresent(item::setOther));
} }
// B单取附加
List<DlRepairTitemReqVO> BOthers = BItems.stream().filter(item -> item.getItemType().equals("03")).collect(Collectors.toList());
if (CollectionUtil.isNotEmpty(BOthers)) {
Set<String> ids = BOthers.stream().map(DlRepairTitemReqVO::getOtherId).collect(Collectors.toSet());
List<DlRepairOther> dlRepairOthers = otherService.listByIds(ids);
BItems.forEach(item -> dlRepairOthers.stream().filter(i -> i.getId().equals(item.getOtherId())).findFirst().ifPresent(item::setOther));
}
result.setItems(items); result.setItems(items);
result.setBItems(BItems);
// 查询工单操作记录 // 查询工单操作记录
RepairRecordsPageReqVO entity = new RepairRecordsPageReqVO(); RepairRecordsPageReqVO entity = new RepairRecordsPageReqVO();
entity.setTicketId(id); entity.setTicketId(id);
@ -1705,6 +1750,8 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
//维修管理员看所有数据 //维修管理员看所有数据
} else if (userRoleCode.equals(RepairRoleEnum.WAREHOUSE.getCode())) { } else if (userRoleCode.equals(RepairRoleEnum.WAREHOUSE.getCode())) {
//仓管看到所有数据 //仓管看到所有数据
} else if (userRoleCode.equals(RepairRoleEnum.WXCW.getCode())) {
//财务看到所有数据
} else if (userRoleCode.equals(RepairRoleEnum.INSPECTION.getCode())) { } else if (userRoleCode.equals(RepairRoleEnum.INSPECTION.getCode())) {
//总检 //总检
if (RepairCons.TICKETS_WAITING.equals(repairTicketsReqVO.getSelectType())) { if (RepairCons.TICKETS_WAITING.equals(repairTicketsReqVO.getSelectType())) {
@ -1977,6 +2024,70 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
} }
/**
* 指派施工施工项目中不包含选中人员处理
* @param ticketId 工单id
* @param nowRepairIds 当前处理人id
* @param nowRepairNames 当前处理人名称
* @author PQZ
* @date 16:30 2024/11/13
**/
private void setTicketItem(String ticketId, String nowRepairIds, String nowRepairNames) {
//查询所有维修工
List<RepairWorker> list = repairWorkerService.list();
//查询当前工单下所有项目
LambdaQueryWrapper<DlRepairTitem> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(DlRepairTitem::getTicketId, ticketId);
List<DlRepairTitem> itemList = titemService.list(lambdaQueryWrapper);
//过滤出不包括当前指派人的值
List<DlRepairTitem> filterList = itemList.stream()
.filter(item -> !item.getRepairNames().contains(nowRepairNames))
.collect(Collectors.toList());
List<DlRepairTitem> saveList = new ArrayList<>();
//当前处理人工作组
Map<Long, RepairWorker> workerMap = list.stream()
.collect(Collectors.toMap(RepairWorker::getUserId, worker -> worker));
String workType = workerMap.get(Long.parseLong(nowRepairIds.split(",")[0])).getWorkType(); // 假设第一个 repairId 对应的工人的 workType
// nowRepairIds 字符串转为 List<Long>
List<Long> repairIdList = Arrays.stream(nowRepairIds.split(","))
.map(Long::parseLong)
.collect(Collectors.toList());
filterList.forEach(item -> {
//深拷贝
DlRepairTitem saveItem = BeanUtils.toBean(item, DlRepairTitem.class);
if (StringUtils.isNotEmpty(saveItem.getRepairIds())) {
//取出用户id
List<Long> repairIds = Arrays.stream(saveItem.getRepairIds().split(","))
.map(Long::parseLong)
.collect(Collectors.toList());
repairIds.forEach(idItem -> {
// 获取对应的 worker
RepairWorker worker = workerMap.get(idItem);
// 检查 worker 是否存在并比较 workType
if (worker != null && workType.equals(worker.getWorkType())) {
saveList.add(saveItem);
return;
}
});
}
});
saveList.forEach(item -> {
// 使用逗号拼接修理人ID和名字
String newRepairId = item.getRepairIds() + "," + nowRepairIds;
String newRepairName = item.getRepairNames() + "," + nowRepairNames;
item.setRepairIds(newRepairId);
item.setRepairNames(newRepairName);
});
// 批量更新数据库中的工单项
titemService.updateBatchById(saveList);
}
/** /**
* 更新工单状态(针对开始施工施工中记录施工完成) * 更新工单状态(针对开始施工施工中记录施工完成)
* @param respVO 请求对象 * @param respVO 请求对象
@ -2166,7 +2277,7 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
// repairTicketsReqVO.setIsFinish("1"); // repairTicketsReqVO.setIsFinish("1");
} else if (userRoleCode.equals(RepairRoleEnum.INSPECTION.getCode())) { } else if (userRoleCode.equals(RepairRoleEnum.INSPECTION.getCode())) {
// 总检 // 总检
repairTicketsReqVO.setNowRepairId(loginUserId); repairTicketsReqVO.setNowRepairId(loginUserId.toString());
// 因为完成状态需要在交车之后所以注掉这个 // 因为完成状态需要在交车之后所以注掉这个
// repairTicketsReqVO.setIsFinish("0"); // repairTicketsReqVO.setIsFinish("0");
} else { } else {
@ -2755,7 +2866,7 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
List<DlRepairTickets> updateTickets = result.stream().map(item -> { List<DlRepairTickets> updateTickets = result.stream().map(item -> {
DlRepairTickets ticket = new DlRepairTickets(); DlRepairTickets ticket = new DlRepairTickets();
ticket.setId(item.getId()); ticket.setId(item.getId());
ticket.setNowRepairId(Long.valueOf(item.getAdviserId())); ticket.setNowRepairId(item.getAdviserId());
ticket.setNowRepairName(item.getAdviserName()); ticket.setNowRepairName(item.getAdviserName());
return ticket; return ticket;
}).collect(Collectors.toList()); }).collect(Collectors.toList());

View File

@ -31,6 +31,7 @@ public class DlRepairTicketsRespVO extends DlRepairTickets {
/** 上面有地方在用,只能新用一个了,子表数组 */ /** 上面有地方在用,只能新用一个了,子表数组 */
private List<DlRepairTitemReqVO> items; private List<DlRepairTitemReqVO> items;
private List<DlRepairTitemReqVO> bItems;
/** 预约记录ID */ /** 预约记录ID */
private String bookingId; private String bookingId;
@ -50,7 +51,9 @@ public class DlRepairTicketsRespVO extends DlRepairTickets {
/** 车辆信息 */ /** 车辆信息 */
private CarMainRespVO carInfo; private CarMainRespVO carInfo;
List<DlRepairTitemReqVO> wares; List<DlRepairTitemReqVO> wares;
List<DlRepairTitemReqVO> bWares;
List<DlRepairTitemReqVO> projects; List<DlRepairTitemReqVO> projects;
List<DlRepairTitemReqVO> bProjects;
private String linkPhone; private String linkPhone;
@ -112,4 +115,5 @@ public class DlRepairTicketsRespVO extends DlRepairTickets {
private String billedQrcode; private String billedQrcode;
/** 开票备注 */ /** 开票备注 */
private String billedRemark; private String billedRemark;
private Integer hasChildTickets;
} }

View File

@ -136,6 +136,7 @@
<result property="billedUsername" column="billed_username" /> <result property="billedUsername" column="billed_username" />
<result property="billedQrcode" column="billed_qrcode" /> <result property="billedQrcode" column="billed_qrcode" />
<result property="billedRemark" column="billed_remark" /> <result property="billedRemark" column="billed_remark" />
<result property="hasChildTickets" column="hasChildTickets" />
<association property="booking" javaType="cn.iocoder.yudao.module.booking.entity.DlRepairBooking" select="selectBookingById" column="id"/> <association property="booking" javaType="cn.iocoder.yudao.module.booking.entity.DlRepairBooking" select="selectBookingById" column="id"/>
<collection property="itemList" column="id" ofType="cn.iocoder.yudao.module.tickets.entity.DlRepairTitem" select="selectItemList" /> <collection property="itemList" column="id" ofType="cn.iocoder.yudao.module.tickets.entity.DlRepairTitem" select="selectItemList" />
</resultMap> </resultMap>
@ -372,11 +373,18 @@
AND ( drt.now_repair_id = #{map.nowRepairId}) AND ( drt.now_repair_id = #{map.nowRepairId})
</if> </if>
-- 服务顾问查待处理(服务顾问之间可以相互查) -- -- 服务顾问查待处理(服务顾问之间可以相互查) --
<!-- <if test="map.nowRepairIds != null and map.nowRepairIds.size > 0">-->
<!-- AND (-->
<!-- drt.now_repair_id in-->
<!-- <foreach collection="map.nowRepairIds" item="id" open="(" separator="," close=")">-->
<!-- #{id}-->
<!-- </foreach>-->
<!-- )-->
<!-- </if>-->
<if test="map.nowRepairIds != null and map.nowRepairIds.size > 0"> <if test="map.nowRepairIds != null and map.nowRepairIds.size > 0">
AND ( AND (
drt.now_repair_id in <foreach collection="map.nowRepairIds" item="id" open="(" separator=" OR " close=")">
<foreach collection="map.nowRepairIds" item="id" open="(" separator="," close=")"> FIND_IN_SET(#{id}, drt.now_repair_id) > 0
#{id}
</foreach> </foreach>
) )
</if> </if>
@ -440,7 +448,12 @@
( (
SELECT SUM(item_money - item_profit) FROM dl_repair_titem SELECT SUM(item_money - item_profit) FROM dl_repair_titem
WHERE ticket_id = drt.id AND item_type = '02' WHERE ticket_id = drt.id AND item_type = '02'
) AS accessoriesMoney ) AS accessoriesMoney,
/* 查询是否有被绑定的工单 */
(
SELECT COUNT(*) FROM dl_repair_tickets child
WHERE child.parent_ticket_id = drt.id AND child.deleted = '0'
) AS hasChildTickets
FROM dl_repair_tickets drt FROM dl_repair_tickets drt
LEFT JOIN dl_repair_titem drti LEFT JOIN dl_repair_titem drti
ON drt.id = drti.ticket_id AND drti.deleted = '0' AND drti.item_type='01' ON drt.id = drti.ticket_id AND drti.deleted = '0' AND drti.item_type='01'