配件申请单审核时,合并维修工单中已存在的配件
This commit is contained in:
parent
b947a96ca8
commit
f1e722d302
@ -270,25 +270,53 @@ public class DlTicketWaresServiceImpl extends ServiceImpl<DlTicketWaresMapper, D
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 计算配件的总价
|
// 这里是重新计算维修工单中的配件相关的信息,写了一个公共的重新计算工单的方法,替换掉
|
||||||
BigDecimal reduce = repairItemList.stream().map(DlRepairTitem::getItemMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
|
// // 计算配件的总价
|
||||||
repairTicketsService.update(new LambdaUpdateWrapper<DlRepairTickets>()
|
// BigDecimal reduce = repairItemList.stream().map(DlRepairTitem::getItemMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||||
// 工单子项总数量增加上配件的数量
|
// repairTicketsService.update(new LambdaUpdateWrapper<DlRepairTickets>()
|
||||||
.setSql("count = count + " + repairItemList.size())
|
// // 工单子项总数量增加上配件的数量
|
||||||
// 工单配件总价
|
// .setSql("count = count + " + repairItemList.size())
|
||||||
.setSql("part_price = part_price + " + reduce)
|
// // 工单配件总价
|
||||||
// 工单总价
|
// .setSql("part_price = part_price + " + reduce)
|
||||||
.setSql("total_price = total_price + " + reduce)
|
// // 工单总价
|
||||||
// 参考成本
|
// .setSql("total_price = total_price + " + reduce)
|
||||||
.setSql("cost = cost + " + reduce)
|
// // 参考成本
|
||||||
// 参考毛利
|
// .setSql("cost = cost + " + reduce)
|
||||||
.setSql("profit = profit + " + reduce)
|
// // 参考毛利
|
||||||
// 领料状态
|
// .setSql("profit = profit + " + reduce)
|
||||||
.set(DlRepairTickets::getPartStatus, "02")
|
// // 领料状态
|
||||||
.eq(DlRepairTickets::getId, ticketMainId)
|
// .set(DlRepairTickets::getPartStatus, "02")
|
||||||
);
|
// .eq(DlRepairTickets::getId, ticketMainId)
|
||||||
// 更新维修工单子表
|
// );
|
||||||
repairItemList.forEach(item -> {
|
// 更新维修工单子表----需要合并相同的配件,故修改
|
||||||
|
// 先查维修工单的子表中的配件相关的信息
|
||||||
|
List<DlRepairTitem> oldTitem = repairTitemService.list(new LambdaQueryWrapper<DlRepairTitem>().and(i -> i.eq(DlRepairTitem::getTicketId, ticketMainId).eq(DlRepairTitem::getItemType, "02")));
|
||||||
|
// 过滤出新申请的配件里面有没有已经存在于工单子表的
|
||||||
|
List<String> waresIds = oldTitem.stream().map(DlRepairTitem::getPartId).collect(Collectors.toList());
|
||||||
|
List<DlRepairTitem> already = repairItemList.stream().filter(item -> waresIds.contains(item.getPartId())).collect(Collectors.toList());
|
||||||
|
// 更新已经存在的配件
|
||||||
|
if (CollectionUtil.isNotEmpty(already)) {
|
||||||
|
List<DlRepairTitem> updateItems = new ArrayList<>();
|
||||||
|
already.forEach(item -> {
|
||||||
|
DlRepairTitem titem = oldTitem.stream().filter(i -> i.getPartId().equals(item.getPartId())).findFirst().orElse(null);
|
||||||
|
if (titem != null) {
|
||||||
|
DlRepairTitem newItem = new DlRepairTitem();
|
||||||
|
newItem.setId(titem.getId());
|
||||||
|
newItem.setItemCount(titem.getItemCount() + item.getItemCount());
|
||||||
|
// 如果设置了折扣就用,没有就是1
|
||||||
|
BigDecimal itemDiscount = titem.getItemDiscount() == null ? new BigDecimal(1) : titem.getItemDiscount();
|
||||||
|
// titem取价格、newItem取数量
|
||||||
|
newItem.setItemMoney(titem.getItemPrice().multiply(BigDecimal.valueOf(newItem.getItemCount())).multiply(itemDiscount));
|
||||||
|
updateItems.add(newItem);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
if (CollectionUtil.isNotEmpty(updateItems)) {
|
||||||
|
repairTitemService.updateBatchById(updateItems);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// 新增维修工单中没有的配件
|
||||||
|
List<DlRepairTitem> newItems = repairItemList.stream().filter(item -> !waresIds.contains(item.getPartId())).collect(Collectors.toList());
|
||||||
|
newItems.forEach(item -> {
|
||||||
// 主表id
|
// 主表id
|
||||||
item.setTicketId(ticketMainId);
|
item.setTicketId(ticketMainId);
|
||||||
// 类型为配件
|
// 类型为配件
|
||||||
@ -296,7 +324,13 @@ public class DlTicketWaresServiceImpl extends ServiceImpl<DlTicketWaresMapper, D
|
|||||||
// 状态为未领料
|
// 状态为未领料
|
||||||
item.setItemStatus(TicketsItemStatusEnum.WAITING_RECEIVE.getCode());
|
item.setItemStatus(TicketsItemStatusEnum.WAITING_RECEIVE.getCode());
|
||||||
});
|
});
|
||||||
repairTitemService.saveBatch(repairItemList);
|
repairTitemService.saveBatch(newItems);
|
||||||
|
|
||||||
|
// 重新计算工单
|
||||||
|
boolean flag = repairTicketsService.computeTicket(ticketMainId);
|
||||||
|
if (!flag) {
|
||||||
|
throw exception0(500, "系统异常");
|
||||||
|
}
|
||||||
|
|
||||||
// 发送通过的消息给仓库
|
// 发送通过的消息给仓库
|
||||||
RoleReqDTO roleInfo = roleApi.getRoleInfo(RepairRoleEnum.WAREHOUSE.getCode());
|
RoleReqDTO roleInfo = roleApi.getRoleInfo(RepairRoleEnum.WAREHOUSE.getCode());
|
||||||
@ -304,54 +338,56 @@ public class DlTicketWaresServiceImpl extends ServiceImpl<DlTicketWaresMapper, D
|
|||||||
if (CollectionUtil.isNotEmpty(ids)) {
|
if (CollectionUtil.isNotEmpty(ids)) {
|
||||||
ids.forEach(id -> repairWorkerService.sentMessage(id, "您有新的配件申请单需要处理"));
|
ids.forEach(id -> repairWorkerService.sentMessage(id, "您有新的配件申请单需要处理"));
|
||||||
}
|
}
|
||||||
} else if (ObjectUtil.isNotEmpty(respVO.getStatus()) && respVO.getStatus().equals("02") && respVO.getType().equals("02")) {
|
|
||||||
// 如果通过退料,也需要更新
|
|
||||||
// 更新维修工单
|
|
||||||
// 计算配件的总价
|
|
||||||
BigDecimal reduce = respVO.getWares().stream().map(DlRepairTitem::getItemMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
||||||
repairTicketsService.update(new LambdaUpdateWrapper<DlRepairTickets>()
|
|
||||||
// 工单子项总数量增加上配件的数量
|
|
||||||
.setSql("count = count - " + respVO.getWares().size())
|
|
||||||
// 工单配件总价
|
|
||||||
.setSql("part_price = part_price - " + reduce)
|
|
||||||
// 工单总价
|
|
||||||
.setSql("total_price = total_price - " + reduce)
|
|
||||||
// 参考成本
|
|
||||||
.setSql("cost = cost - " + reduce)
|
|
||||||
// 参考毛利
|
|
||||||
.setSql("profit = profit - " + reduce)
|
|
||||||
// 领料状态
|
|
||||||
.set(DlRepairTickets::getPartStatus, "02")
|
|
||||||
.eq(DlRepairTickets::getId, respVO.getTicketId())
|
|
||||||
);
|
|
||||||
// 维修工单子表对应的数据更新
|
|
||||||
// 先查数据出来
|
|
||||||
List<DlRepairTitem> list = repairTitemService.list(new LambdaQueryWrapper<DlRepairTitem>().and(i -> {
|
|
||||||
i.eq(DlRepairTitem::getTicketId, respVO.getTicketId())
|
|
||||||
.in(DlRepairTitem::getPartId, respVO.getWares().stream().map(DlRepairTitem::getPartId).collect(Collectors.toList()));
|
|
||||||
}));
|
|
||||||
list.forEach(item -> {
|
|
||||||
respVO.getWares().stream().filter(i -> i.getPartId().equals(item.getPartId())).findFirst().ifPresent(i -> {
|
|
||||||
// 如果只是退部分就减少数量
|
|
||||||
if (!i.getItemCount().equals(item.getItemCount())) {
|
|
||||||
repairTitemService.update(new LambdaUpdateWrapper<DlRepairTitem>()
|
|
||||||
.setSql("item_count = item_count - " + i.getItemCount())
|
|
||||||
.setSql("item_money = item_money - " + i.getItemMoney())
|
|
||||||
.and(x -> {
|
|
||||||
x.eq(DlRepairTitem::getTicketId, respVO.getTicketId()).eq(DlRepairTitem::getPartId, item.getPartId());
|
|
||||||
})
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
// 如果是全部退了,就直接删掉数据
|
|
||||||
repairTitemService.removeById(item.getId());
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
// 发送没有通过的消息给员工
|
|
||||||
DlTicketWares ticketWares = baseMapper.selectById(respVO.getId());
|
|
||||||
repairWorkerService.sentMessage(ticketWares.getRepairId(), "您的配件申请单被驳回了");
|
|
||||||
}
|
}
|
||||||
|
// 下面的代码为退料申请单通过的代码,但没有退料申请单,可以注掉,但防止有问题,所以先不删除
|
||||||
|
// } else if (ObjectUtil.isNotEmpty(respVO.getStatus()) && respVO.getStatus().equals("02") && respVO.getType().equals("02")) {
|
||||||
|
// // 如果通过退料,也需要更新
|
||||||
|
// // 更新维修工单
|
||||||
|
// // 计算配件的总价
|
||||||
|
// BigDecimal reduce = respVO.getWares().stream().map(DlRepairTitem::getItemMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||||
|
// repairTicketsService.update(new LambdaUpdateWrapper<DlRepairTickets>()
|
||||||
|
// // 工单子项总数量增加上配件的数量
|
||||||
|
// .setSql("count = count - " + respVO.getWares().size())
|
||||||
|
// // 工单配件总价
|
||||||
|
// .setSql("part_price = part_price - " + reduce)
|
||||||
|
// // 工单总价
|
||||||
|
// .setSql("total_price = total_price - " + reduce)
|
||||||
|
// // 参考成本
|
||||||
|
// .setSql("cost = cost - " + reduce)
|
||||||
|
// // 参考毛利
|
||||||
|
// .setSql("profit = profit - " + reduce)
|
||||||
|
// // 领料状态
|
||||||
|
// .set(DlRepairTickets::getPartStatus, "02")
|
||||||
|
// .eq(DlRepairTickets::getId, respVO.getTicketId())
|
||||||
|
// );
|
||||||
|
// // 维修工单子表对应的数据更新
|
||||||
|
// // 先查数据出来
|
||||||
|
// List<DlRepairTitem> list = repairTitemService.list(new LambdaQueryWrapper<DlRepairTitem>().and(i -> {
|
||||||
|
// i.eq(DlRepairTitem::getTicketId, respVO.getTicketId())
|
||||||
|
// .in(DlRepairTitem::getPartId, respVO.getWares().stream().map(DlRepairTitem::getPartId).collect(Collectors.toList()));
|
||||||
|
// }));
|
||||||
|
// list.forEach(item -> {
|
||||||
|
// respVO.getWares().stream().filter(i -> i.getPartId().equals(item.getPartId())).findFirst().ifPresent(i -> {
|
||||||
|
// // 如果只是退部分就减少数量
|
||||||
|
// if (!i.getItemCount().equals(item.getItemCount())) {
|
||||||
|
// repairTitemService.update(new LambdaUpdateWrapper<DlRepairTitem>()
|
||||||
|
// .setSql("item_count = item_count - " + i.getItemCount())
|
||||||
|
// .setSql("item_money = item_money - " + i.getItemMoney())
|
||||||
|
// .and(x -> {
|
||||||
|
// x.eq(DlRepairTitem::getTicketId, respVO.getTicketId()).eq(DlRepairTitem::getPartId, item.getPartId());
|
||||||
|
// })
|
||||||
|
// );
|
||||||
|
// } else {
|
||||||
|
// // 如果是全部退了,就直接删掉数据
|
||||||
|
// repairTitemService.removeById(item.getId());
|
||||||
|
// }
|
||||||
|
// });
|
||||||
|
// });
|
||||||
|
//
|
||||||
|
// // 发送没有通过的消息给员工
|
||||||
|
// DlTicketWares ticketWares = baseMapper.selectById(respVO.getId());
|
||||||
|
// repairWorkerService.sentMessage(ticketWares.getRepairId(), "您的配件申请单被驳回了");
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user