查看工单详情融合B单
This commit is contained in:
parent
26e5fe05f4
commit
461b584711
@ -87,6 +87,15 @@ public interface RepairWorkerService extends IService<RepairWorker> {
|
||||
**/
|
||||
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);
|
||||
|
||||
/**
|
||||
* 向指定用户发送消息(用户,非员工)
|
||||
*
|
||||
|
||||
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 向指定用户发送消息(用户,非员工)
|
||||
*
|
||||
|
||||
@ -474,7 +474,6 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
|
||||
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> projects = items.stream().filter(item -> item.getItemType().equals("01")).collect(Collectors.toList());
|
||||
//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));
|
||||
}
|
||||
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) {
|
||||
//app新增逻辑
|
||||
if (CollectionUtil.isNotEmpty(projects)) {
|
||||
@ -573,6 +594,21 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
|
||||
});
|
||||
}
|
||||
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());
|
||||
@ -581,7 +617,16 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
|
||||
List<DlRepairOther> dlRepairOthers = otherService.listByIds(ids);
|
||||
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.setBItems(BItems);
|
||||
// 查询工单操作记录
|
||||
RepairRecordsPageReqVO entity = new RepairRecordsPageReqVO();
|
||||
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.WXCW.getCode())) {
|
||||
//财务看到所有数据
|
||||
} else if (userRoleCode.equals(RepairRoleEnum.INSPECTION.getCode())) {
|
||||
//总检
|
||||
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 请求对象
|
||||
@ -2166,7 +2277,7 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
|
||||
// repairTicketsReqVO.setIsFinish("1");
|
||||
} else if (userRoleCode.equals(RepairRoleEnum.INSPECTION.getCode())) {
|
||||
// 总检
|
||||
repairTicketsReqVO.setNowRepairId(loginUserId);
|
||||
repairTicketsReqVO.setNowRepairId(loginUserId.toString());
|
||||
// 因为完成状态需要在交车之后,所以注掉这个
|
||||
// repairTicketsReqVO.setIsFinish("0");
|
||||
} else {
|
||||
@ -2755,7 +2866,7 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
|
||||
List<DlRepairTickets> updateTickets = result.stream().map(item -> {
|
||||
DlRepairTickets ticket = new DlRepairTickets();
|
||||
ticket.setId(item.getId());
|
||||
ticket.setNowRepairId(Long.valueOf(item.getAdviserId()));
|
||||
ticket.setNowRepairId(item.getAdviserId());
|
||||
ticket.setNowRepairName(item.getAdviserName());
|
||||
return ticket;
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
@ -31,6 +31,7 @@ public class DlRepairTicketsRespVO extends DlRepairTickets {
|
||||
|
||||
/** 上面有地方在用,只能新用一个了,子表数组 */
|
||||
private List<DlRepairTitemReqVO> items;
|
||||
private List<DlRepairTitemReqVO> bItems;
|
||||
|
||||
/** 预约记录ID */
|
||||
private String bookingId;
|
||||
@ -50,7 +51,9 @@ public class DlRepairTicketsRespVO extends DlRepairTickets {
|
||||
/** 车辆信息 */
|
||||
private CarMainRespVO carInfo;
|
||||
List<DlRepairTitemReqVO> wares;
|
||||
List<DlRepairTitemReqVO> bWares;
|
||||
List<DlRepairTitemReqVO> projects;
|
||||
List<DlRepairTitemReqVO> bProjects;
|
||||
|
||||
private String linkPhone;
|
||||
|
||||
@ -112,4 +115,5 @@ public class DlRepairTicketsRespVO extends DlRepairTickets {
|
||||
private String billedQrcode;
|
||||
/** 开票备注 */
|
||||
private String billedRemark;
|
||||
private Integer hasChildTickets;
|
||||
}
|
||||
|
||||
@ -136,6 +136,7 @@
|
||||
<result property="billedUsername" column="billed_username" />
|
||||
<result property="billedQrcode" column="billed_qrcode" />
|
||||
<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"/>
|
||||
<collection property="itemList" column="id" ofType="cn.iocoder.yudao.module.tickets.entity.DlRepairTitem" select="selectItemList" />
|
||||
</resultMap>
|
||||
@ -372,11 +373,18 @@
|
||||
AND ( drt.now_repair_id = #{map.nowRepairId})
|
||||
</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">
|
||||
AND (
|
||||
drt.now_repair_id in
|
||||
<foreach collection="map.nowRepairIds" item="id" open="(" separator="," close=")">
|
||||
#{id}
|
||||
<foreach collection="map.nowRepairIds" item="id" open="(" separator=" OR " close=")">
|
||||
FIND_IN_SET(#{id}, drt.now_repair_id) > 0
|
||||
</foreach>
|
||||
)
|
||||
</if>
|
||||
@ -440,7 +448,12 @@
|
||||
(
|
||||
SELECT SUM(item_money - item_profit) FROM dl_repair_titem
|
||||
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
|
||||
LEFT JOIN dl_repair_titem drti
|
||||
ON drt.id = drti.ticket_id AND drti.deleted = '0' AND drti.item_type='01'
|
||||
|
||||
Loading…
Reference in New Issue
Block a user