Merge branch 'master' into repair
# Conflicts: # dl-module-repair/src/main/java/cn/iocoder/yudao/module/tickets/service/impl/DlRepairTicketsServiceImpl.java
This commit is contained in:
commit
92b4b7e7d1
@ -11,6 +11,7 @@ public interface CommonErrorCodeConstants extends ErrorCodeConstants {
|
||||
ErrorCode STAFF_NOT_CHANGE = new ErrorCode(2_002_000_003, "该员工还有工作未交接,不可删除");
|
||||
ErrorCode LOGIN_ACCOUNT_EXIST = new ErrorCode(2_002_000_004, "登录账号已存在");
|
||||
ErrorCode LOGIN_ACCOUNT_NOT_EXIST = new ErrorCode(2_002_000_005, "登录账号不存在");
|
||||
ErrorCode LOGIN_ACCOUNT_NOT_AUTH = new ErrorCode(2_002_000_010, "登录账号没有权限");
|
||||
ErrorCode SYSTEM_ERROR = new ErrorCode(2_002_000_005, "系统错误");
|
||||
ErrorCode MISTAKEN_IDENTITY = new ErrorCode(2_002_000_006, "身份有误");
|
||||
}
|
||||
|
@ -2,7 +2,6 @@ package cn.iocoder.yudao.module.staff.controller.admin;
|
||||
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.iocoder.yudao.common.CommonErrorCodeConstants;
|
||||
import cn.iocoder.yudao.framework.apilog.core.annotation.ApiAccessLog;
|
||||
import cn.iocoder.yudao.framework.common.pojo.CommonResult;
|
||||
import cn.iocoder.yudao.framework.excel.core.util.ExcelUtils;
|
||||
@ -324,7 +323,7 @@ public class CompanyStaffController {
|
||||
rtnMap.put("loginResult",loginService.loginApp(authLoginReqVO,loginBody.getTenantId()));
|
||||
return success(rtnMap);
|
||||
}catch (Exception e){
|
||||
return error(CommonErrorCodeConstants.LOGIN_ACCOUNT_NOT_EXIST);
|
||||
return error(2_002_000_005,e.getMessage());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -94,7 +94,7 @@ public class ApiAppLoginServiceImpl implements ApiAppLoginService {
|
||||
// 获取登录用户的角色信息
|
||||
List<Long> roleIdsByUserId = permissionApi.getRoleIdsByUserId(user.getId());
|
||||
if (ObjectUtil.isEmpty(roleIdsByUserId) || roleIdsByUserId.size() == 0) {
|
||||
throw new Exception(CommonErrorCodeConstants.LOGIN_ACCOUNT_NOT_EXIST.getMsg());
|
||||
throw new Exception(CommonErrorCodeConstants.LOGIN_ACCOUNT_NOT_AUTH.getMsg());
|
||||
}
|
||||
List<RoleReqDTO> roleList = roleApi.getRoleList();
|
||||
//所拥有的角色code集和
|
||||
@ -126,11 +126,11 @@ public class ApiAppLoginServiceImpl implements ApiAppLoginService {
|
||||
|
||||
} else {
|
||||
//错误的业务系统标识
|
||||
throw new Exception(CommonErrorCodeConstants.LOGIN_ACCOUNT_NOT_EXIST.getMsg());
|
||||
throw new Exception(CommonErrorCodeConstants.LOGIN_ACCOUNT_NOT_AUTH.getMsg());
|
||||
}
|
||||
// 角色是否可以登录
|
||||
if (!flag) {
|
||||
throw new Exception(CommonErrorCodeConstants.LOGIN_ACCOUNT_NOT_EXIST.getMsg());
|
||||
throw new Exception(CommonErrorCodeConstants.LOGIN_ACCOUNT_NOT_AUTH.getMsg());
|
||||
}
|
||||
return user;
|
||||
}
|
||||
|
@ -1582,69 +1582,80 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
|
||||
@Override
|
||||
@DSTransactional
|
||||
public boolean computeTicket(String ticketId) {
|
||||
// 取主表
|
||||
DlRepairTickets tickets = baseMapper.selectById(ticketId);
|
||||
// 取子表
|
||||
List<DlRepairTitem> titems = titemService.list(new LambdaQueryWrapper<DlRepairTitem>().eq(DlRepairTitem::getTicketId, ticketId));
|
||||
if (CollectionUtil.isEmpty(titems)) {
|
||||
Long time1 = System.currentTimeMillis();
|
||||
/*1.查主表 */
|
||||
DlRepairTickets oldTicket = baseMapper.selectById(ticketId);
|
||||
// 管理费
|
||||
BigDecimal managerMoney = ObjectUtil.isNotEmpty(oldTicket.getManagerMoney()) ? oldTicket.getManagerMoney() : new BigDecimal("0");
|
||||
// 救援费
|
||||
BigDecimal rescueMoney = ObjectUtil.isNotEmpty(oldTicket.getRescueMoney()) ? oldTicket.getRescueMoney() : new BigDecimal("0");
|
||||
// 三包费
|
||||
BigDecimal threePackMoney = ObjectUtil.isNotEmpty(oldTicket.getThreePackMoney()) ? oldTicket.getThreePackMoney() : new BigDecimal("0");
|
||||
// 定损费
|
||||
BigDecimal confirmFaultMoney = ObjectUtil.isNotEmpty(oldTicket.getConfirmFaultMoney()) ? oldTicket.getConfirmFaultMoney() : new BigDecimal("0");
|
||||
/*2.查子表 */
|
||||
List<DlRepairTitem> list = titemService.list(new LambdaQueryWrapper<DlRepairTitem>().eq(DlRepairTitem::getTicketId, ticketId));
|
||||
if (CollectionUtil.isEmpty(list)) {
|
||||
throw exception0(500, "没有项目、配件或其他");
|
||||
}
|
||||
// 计算子表
|
||||
Map<String, BigDecimal> titemsMap = titems.stream().collect(Collectors.toMap(
|
||||
DlRepairTitem::getId,
|
||||
item -> {
|
||||
BigDecimal discount = item.getItemDiscount() == null ? BigDecimal.ONE : item.getItemDiscount();
|
||||
BigDecimal itemPrice = item.getItemPrice() == null ? BigDecimal.ZERO : item.getItemPrice();
|
||||
return itemPrice.multiply(BigDecimal.valueOf(item.getItemCount())).multiply(discount);
|
||||
/*3.遍历数据--遍历这一次,处理所有需要处理的*/
|
||||
//商品总数
|
||||
Integer goodsCount=0;
|
||||
//工单总价
|
||||
BigDecimal totalAmount = BigDecimal.ZERO.add(managerMoney).add(rescueMoney).add(threePackMoney).add(confirmFaultMoney);
|
||||
//项目总价
|
||||
BigDecimal proAmount = BigDecimal.ZERO;
|
||||
//配件总价
|
||||
BigDecimal waresAmount = BigDecimal.ZERO;
|
||||
//其他总价
|
||||
BigDecimal otherAmount = BigDecimal.ZERO;
|
||||
for(DlRepairTitem item:list){
|
||||
//空字段设置默认值
|
||||
if(null==item.getItemDiscount()){
|
||||
item.setItemDiscount(new BigDecimal(1));
|
||||
}
|
||||
));
|
||||
titems.forEach(item -> {
|
||||
item.setItemMoney(titemsMap.get(item.getId()));
|
||||
});
|
||||
titemService.updateBatchById(titems);
|
||||
|
||||
// 计算主表
|
||||
// 总数量
|
||||
tickets.setCount(titems.stream().mapToInt(DlRepairTitem::getItemCount).sum());
|
||||
// 各类总价
|
||||
Map<String, BigDecimal> typePrice = titems.stream()
|
||||
.collect(Collectors.groupingBy(DlRepairTitem::getItemType,
|
||||
Collectors.mapping(DlRepairTitem::getItemMoney,
|
||||
Collectors.reducing(BigDecimal.ZERO, BigDecimal::add))));
|
||||
BigDecimal itemTotalPrice = new BigDecimal("0");
|
||||
for (Map.Entry<String, BigDecimal> entry : typePrice.entrySet()) {
|
||||
itemTotalPrice = itemTotalPrice.add(entry.getValue());
|
||||
switch (entry.getKey()){
|
||||
case "01":
|
||||
tickets.setProjectPrice(entry.getValue());
|
||||
break;
|
||||
case "02":
|
||||
tickets.setPartPrice(entry.getValue());
|
||||
break;
|
||||
case "03":
|
||||
tickets.setOtherPrice(entry.getValue());
|
||||
break;
|
||||
if(null==item.getItemPrice()){
|
||||
item.setItemPrice(BigDecimal.ZERO);
|
||||
}
|
||||
if(null==item.getItemCount()){
|
||||
item.setItemCount(1);
|
||||
}
|
||||
//总价
|
||||
item.setItemMoney(item.getItemPrice().multiply(BigDecimal.valueOf(item.getItemCount())).multiply(item.getItemDiscount()));
|
||||
//商品数量
|
||||
goodsCount+=item.getItemCount();
|
||||
//工单总价
|
||||
totalAmount = totalAmount.add(item.getItemMoney());
|
||||
if("01".equals(item.getItemType())){
|
||||
//项目
|
||||
proAmount = proAmount.add(item.getItemMoney());
|
||||
}else if("02".equals(item.getItemType())){
|
||||
//配件
|
||||
waresAmount = waresAmount.add(item.getItemMoney());
|
||||
}else if("03".equals(item.getItemType())){
|
||||
//其他
|
||||
otherAmount = otherAmount.add(item.getItemMoney());
|
||||
}
|
||||
}
|
||||
// 其他费用
|
||||
// 管理费
|
||||
BigDecimal managerMoney = ObjectUtil.isNotEmpty(tickets.getManagerMoney()) ? tickets.getManagerMoney() : new BigDecimal("0");
|
||||
// 救援费
|
||||
BigDecimal rescueMoney = ObjectUtil.isNotEmpty(tickets.getRescueMoney()) ? tickets.getRescueMoney() : new BigDecimal("0");
|
||||
// 三包费
|
||||
BigDecimal threePackMoney = ObjectUtil.isNotEmpty(tickets.getThreePackMoney()) ? tickets.getThreePackMoney() : new BigDecimal("0");
|
||||
// 定损费
|
||||
BigDecimal confirmFaultMoney = ObjectUtil.isNotEmpty(tickets.getConfirmFaultMoney()) ? tickets.getConfirmFaultMoney() : new BigDecimal("0");
|
||||
|
||||
tickets.setTotalPrice(itemTotalPrice.add(managerMoney).add(rescueMoney).add(threePackMoney).add(confirmFaultMoney));
|
||||
|
||||
// 更新订单
|
||||
/*4.设置指定字段值*/
|
||||
oldTicket.setCount(goodsCount);
|
||||
oldTicket.setTotalPrice(totalAmount);
|
||||
oldTicket.setProjectPrice(proAmount);
|
||||
oldTicket.setPartPrice(waresAmount);
|
||||
oldTicket.setOtherPrice(otherAmount);
|
||||
/*5.更新数据*/
|
||||
//暂不更新,只要计算不出问题就行
|
||||
// titemService.updateBatchById(list);
|
||||
baseMapper.updateById(oldTicket);
|
||||
// 因为订单是在工单创建的时候就新增了,后面加的配件之类的金额没有同步到订单,这里同步一下
|
||||
RepairOrderInfo orderInfo = repairOrderInfoService.getOne(new LambdaQueryWrapper<RepairOrderInfo>().eq(RepairOrderInfo::getGoodsId, ticketId));
|
||||
orderInfo.setGoodsPrice(tickets.getTotalPrice());
|
||||
orderInfo.setPayMoney(tickets.getTotalPrice());
|
||||
// 更新商品原价和实付金额
|
||||
orderInfo.setGoodsPrice(totalAmount);
|
||||
orderInfo.setPayMoney(totalAmount);
|
||||
repairOrderInfoService.updateById(orderInfo);
|
||||
|
||||
return baseMapper.updateById(tickets) > 0;
|
||||
Long time2 = System.currentTimeMillis();
|
||||
System.out.println("时间差:"+(time2-time1));
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1826,9 +1837,9 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
|
||||
/**
|
||||
* 根据工单ID查客户和车辆信息
|
||||
*
|
||||
* @param id id
|
||||
* @author 小李
|
||||
* @date 19:07 2024/11/18
|
||||
* @param id id
|
||||
**/
|
||||
@Override
|
||||
public CustomerAndCarVO getCusAndCarById(String id){
|
||||
|
@ -347,13 +347,11 @@ public class DlTicketWaresServiceImpl extends ServiceImpl<DlTicketWaresMapper, D
|
||||
}).collect(Collectors.toList());
|
||||
repairTitemService.saveBatch(newTitems);
|
||||
}
|
||||
|
||||
// 更新维修工单主表
|
||||
boolean flag = repairTicketsService.computeTicket(ticketWares.getTicketId());
|
||||
if (!flag) {
|
||||
throw exception0(500, "重新计算工单错误");
|
||||
}
|
||||
|
||||
// 发送通过的消息给仓库
|
||||
RoleReqDTO roleInfo = roleApi.getRoleInfo(RepairRoleEnum.WAREHOUSE.getCode());
|
||||
List<Long> ids = permissionApi.getUserIdByRoleId(roleInfo.getId());
|
||||
|
Loading…
Reference in New Issue
Block a user