Compare commits
No commits in common. "3990949c6edcc2477b88ecfd764989e3d99b874b" and "3319ac9b6fd5f9a811fc95ba730fc45b832d4b47" have entirely different histories.
3990949c6e
...
3319ac9b6f
@ -270,53 +270,25 @@ public class DlTicketWaresServiceImpl extends ServiceImpl<DlTicketWaresMapper, D
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 这里是重新计算维修工单中的配件相关的信息,写了一个公共的重新计算工单的方法,替换掉
|
// 计算配件的总价
|
||||||
// // 计算配件的总价
|
BigDecimal reduce = repairItemList.stream().map(DlRepairTitem::getItemMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
|
||||||
// BigDecimal reduce = repairItemList.stream().map(DlRepairTitem::getItemMoney).reduce(BigDecimal.ZERO, BigDecimal::add);
|
repairTicketsService.update(new LambdaUpdateWrapper<DlRepairTickets>()
|
||||||
// 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")
|
||||||
// .set(DlRepairTickets::getPartStatus, "02")
|
.eq(DlRepairTickets::getId, ticketMainId)
|
||||||
// .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);
|
||||||
// 类型为配件
|
// 类型为配件
|
||||||
@ -324,13 +296,7 @@ public class DlTicketWaresServiceImpl extends ServiceImpl<DlTicketWaresMapper, D
|
|||||||
// 状态为未领料
|
// 状态为未领料
|
||||||
item.setItemStatus(TicketsItemStatusEnum.WAITING_RECEIVE.getCode());
|
item.setItemStatus(TicketsItemStatusEnum.WAITING_RECEIVE.getCode());
|
||||||
});
|
});
|
||||||
repairTitemService.saveBatch(newItems);
|
repairTitemService.saveBatch(repairItemList);
|
||||||
|
|
||||||
// 重新计算工单
|
|
||||||
boolean flag = repairTicketsService.computeTicket(ticketMainId);
|
|
||||||
if (!flag) {
|
|
||||||
throw exception0(500, "系统异常");
|
|
||||||
}
|
|
||||||
|
|
||||||
// 发送通过的消息给仓库
|
// 发送通过的消息给仓库
|
||||||
RoleReqDTO roleInfo = roleApi.getRoleInfo(RepairRoleEnum.WAREHOUSE.getCode());
|
RoleReqDTO roleInfo = roleApi.getRoleInfo(RepairRoleEnum.WAREHOUSE.getCode());
|
||||||
@ -338,56 +304,54 @@ 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