更新
This commit is contained in:
parent
e3b4c77229
commit
a6e9c21e6a
@ -182,7 +182,7 @@ public class InspectionMallPartnersController extends BaseController {
|
||||
Map<String, Object> stringObjectMap = orderInfoService.workOrderData(query);
|
||||
|
||||
rows.add(CollUtil.newArrayList("公示价格汇总:", "", String.valueOf(Double.parseDouble(stringObjectMap.get("goodsPriceSum").toString()) / 100d) + "元", "实付金额汇总:", "", String.valueOf(Double.parseDouble(stringObjectMap.get("payMoneySum").toString()) / 100d) + "元"));
|
||||
rows.add(CollUtil.newArrayList("车牌号", "检测车型", "检测类型", "业务渠道", "客户来源", "经办人", "承保公司", "交强到期时间", "商业到期时间", "公示价格", "实收金额", "优惠金额","付款时间", "客户手机号", "支付方式", "开始时间", "结束时间", "检测结果", "出纳是否确认"));
|
||||
rows.add(CollUtil.newArrayList("车牌号", "检测车型", "检测类型", "业务渠道", "客户来源", "经办人", "承保公司", "交强到期时间", "商业到期时间", "公示价格", "实收金额", "优惠金额", "付款时间", "客户名称", "客户手机号", "支付方式", "收款账号", "开始时间", "结束时间", "检测结果", "出纳是否确认"));
|
||||
|
||||
|
||||
List<DictDataDO> sysDictData = dictDataService.getDictDataListByDictType("pay_type");
|
||||
@ -226,8 +226,8 @@ public class InspectionMallPartnersController extends BaseController {
|
||||
.toString(), ObjectUtil.isEmpty(item.getRealPayMoney()) ? "暂未支付" : BigDecimal.valueOf(item.getRealPayMoney())
|
||||
.divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP)
|
||||
.toString(), ObjectUtil.isEmpty(item.getReduceMoney()) ? "" : BigDecimal.valueOf(item.getReduceMoney())
|
||||
.divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP).toString(),ObjectUtil.isEmpty(item.getPayTime()) ? "暂未支付" : DateUtil.format(item.getPayTime(), "yyyy-MM-dd hh:mm"),
|
||||
Optional.ofNullable(item.getBuyPhone()).orElse(""), payTypeStr, ObjectUtil.isEmpty(item.getStartTime()) ? "" : DateUtil.format(item.getStartTime(), "yyyy-MM-dd hh:mm"), ObjectUtil.isEmpty(item.getEndTime()) ? "" : DateUtil.format(item.getEndTime(), "yyyy-MM-dd hh:mm"), isPassStr, cashier));
|
||||
.divide(BigDecimal.valueOf(100), 2, RoundingMode.HALF_UP).toString(), ObjectUtil.isEmpty(item.getPayTime()) ? "暂未支付" : DateUtil.format(item.getPayTime(), "yyyy-MM-dd hh:mm"),
|
||||
Optional.ofNullable(item.getBuyName()).orElse(""), Optional.ofNullable(item.getBuyPhone()).orElse(""), payTypeStr, Optional.ofNullable(item.getReceivablesAccount()).orElse(""), ObjectUtil.isEmpty(item.getStartTime()) ? "" : DateUtil.format(item.getStartTime(), "yyyy-MM-dd hh:mm"), ObjectUtil.isEmpty(item.getEndTime()) ? "" : DateUtil.format(item.getEndTime(), "yyyy-MM-dd hh:mm"), isPassStr, cashier));
|
||||
}
|
||||
|
||||
// 创建 ExcelWriter
|
||||
|
||||
@ -769,7 +769,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||
AND ins.recheck_count != 0 AND ins.recheck_count IS NOT NULL
|
||||
</if>
|
||||
<if test="query.payStatus == 0">
|
||||
and (oi.pay_money is null OR oi.pay_type = 'sz')
|
||||
and (oi.pay_money is null OR oi.pay_type = 'sz') and (oi.cashier_confirm = 0 OR oi.cashier_confirm IS NULL )
|
||||
</if>
|
||||
<if test="query.payStatus == 1">
|
||||
and oi.pay_time is not null AND oi.pay_type != 'sz'
|
||||
|
||||
@ -212,7 +212,7 @@ public class DlRepairTickets extends TenantBaseDO {
|
||||
private String isPickCar;
|
||||
|
||||
/** 工单当前施工人id */
|
||||
private String nowRepairId;
|
||||
private Long nowRepairId;
|
||||
|
||||
/** 工单当前施工人name */
|
||||
private String nowRepairName;
|
||||
|
||||
@ -1264,6 +1264,15 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
|
||||
// 查询当前工单的完成记录,构建 repairItemId -> 完成记录 映射
|
||||
Map<String, RepairRecords> finishedRecordMap = buildFinishedRecordMap(ticketId, items);
|
||||
|
||||
// 查询特殊项目完成状态
|
||||
boolean zjFinished = hasRecordType(ticketId, RecordTypeEnum.ZJ.getCode()); // 总检
|
||||
boolean skFinished = hasRecordType(ticketId, RecordTypeEnum.SK.getCode()); // 收款
|
||||
|
||||
// 服务顾问相关的完成状态
|
||||
boolean jsgdFinished = hasRecordType(ticketId, RecordTypeEnum.JSGD.getCode()); // 结束工单(出厂检验)
|
||||
boolean jcFinished = hasRecordType(ticketId, RecordTypeEnum.JC.getCode()); // 交车
|
||||
boolean jssqFinished = hasRecordType(ticketId, RecordTypeEnum.JSSQ.getCode()); // 结算申请
|
||||
|
||||
// 当前工单涉及到的维修工人(用于获取工种/班组)
|
||||
List<RepairWorker> workers = repairWorkerService.listByTicketId(ticketId);
|
||||
if (CollectionUtil.isEmpty(workers)) {
|
||||
@ -1299,7 +1308,7 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
|
||||
if (itemWorkTypes.isEmpty()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
// 构建项目详情
|
||||
DlRepairTitemRespVO itemVO = new DlRepairTitemRespVO();
|
||||
itemVO.setId(item.getId());
|
||||
@ -1340,10 +1349,10 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
|
||||
progressMap.put(workType, vo);
|
||||
teamItemsMap.put(workType, new ArrayList<>());
|
||||
}
|
||||
|
||||
|
||||
// 添加项目到对应班组
|
||||
teamItemsMap.get(workType).add(itemVO);
|
||||
|
||||
|
||||
vo.setTotalItems(vo.getTotalItems() + 1);
|
||||
if (finished) {
|
||||
vo.setFinishedItems(vo.getFinishedItems() + 1);
|
||||
@ -1351,6 +1360,9 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
|
||||
}
|
||||
}
|
||||
|
||||
// 处理特殊固定班组和项目:总检班组、财务班组和服务顾问班组
|
||||
handleSpecialTeams(progressMap, teamItemsMap, ticketId, zjFinished, skFinished, jsgdFinished, jcFinished, jssqFinished);
|
||||
|
||||
// 计算完成率并返回列表
|
||||
List<TicketTeamProgressWithItemsVO> resultList = new ArrayList<>();
|
||||
for (TicketTeamProgressWithItemsVO vo : progressMap.values()) {
|
||||
@ -1362,10 +1374,10 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
|
||||
} else {
|
||||
vo.setCompletionRate(BigDecimal.ZERO);
|
||||
}
|
||||
|
||||
|
||||
// 设置班组下的项目列表
|
||||
vo.setChildren(teamItemsMap.get(vo.getWorkType()));
|
||||
|
||||
|
||||
resultList.add(vo);
|
||||
}
|
||||
|
||||
@ -1374,6 +1386,154 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
|
||||
return resultList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理特殊班组和项目(总检班组、财务班组和服务顾问班组)
|
||||
*
|
||||
* @param progressMap 班组进度映射
|
||||
* @param teamItemsMap 班组项目列表映射
|
||||
* @param ticketId 工单ID
|
||||
* @param zjFinished 总检完成状态
|
||||
* @param skFinished 收款完成状态
|
||||
* @param jsgdFinished 出厂检验完成状态
|
||||
* @param jcFinished 交车完成状态
|
||||
* @param jssqFinished 结算申请完成状态
|
||||
*/
|
||||
private void handleSpecialTeams(Map<String, TicketTeamProgressWithItemsVO> progressMap,
|
||||
Map<String, List<DlRepairTitemRespVO>> teamItemsMap,
|
||||
String ticketId, boolean zjFinished, boolean skFinished,
|
||||
boolean jsgdFinished, boolean jcFinished, boolean jssqFinished) {
|
||||
// 处理总检班组
|
||||
String zjWorkType = "zj"; // 总检班组编码
|
||||
String zjWorkTypeName = "总检"; // 总检班组名称
|
||||
|
||||
TicketTeamProgressWithItemsVO zjTeamVO = progressMap.get(zjWorkType);
|
||||
if (zjTeamVO == null) {
|
||||
zjTeamVO = new TicketTeamProgressWithItemsVO();
|
||||
zjTeamVO.setWorkType(zjWorkType);
|
||||
zjTeamVO.setWorkTypeName(zjWorkTypeName);
|
||||
zjTeamVO.setTotalItems(0);
|
||||
zjTeamVO.setFinishedItems(0);
|
||||
zjTeamVO.setCompletionRate(BigDecimal.ZERO);
|
||||
progressMap.put(zjWorkType, zjTeamVO);
|
||||
teamItemsMap.put(zjWorkType, new ArrayList<>());
|
||||
}
|
||||
|
||||
// 创建总检审核项目
|
||||
DlRepairTitemRespVO zjItemVO = new DlRepairTitemRespVO();
|
||||
zjItemVO.setId("zj");
|
||||
zjItemVO.setTicketId(ticketId);
|
||||
zjItemVO.setItemName("总检审核");
|
||||
zjItemVO.setItemType("01");
|
||||
zjItemVO.setFinished(zjFinished);
|
||||
|
||||
// 添加总检审核项目到总检班组
|
||||
teamItemsMap.get(zjWorkType).add(zjItemVO);
|
||||
zjTeamVO.setTotalItems(zjTeamVO.getTotalItems() + 1);
|
||||
if (zjFinished) {
|
||||
zjTeamVO.setFinishedItems(zjTeamVO.getFinishedItems() + 1);
|
||||
}
|
||||
|
||||
// 处理财务班组
|
||||
String skWorkType = "sk"; // 财务班组编码
|
||||
String skWorkTypeName = "财务"; // 财务班组名称
|
||||
|
||||
TicketTeamProgressWithItemsVO skTeamVO = progressMap.get(skWorkType);
|
||||
if (skTeamVO == null) {
|
||||
skTeamVO = new TicketTeamProgressWithItemsVO();
|
||||
skTeamVO.setWorkType(skWorkType);
|
||||
skTeamVO.setWorkTypeName(skWorkTypeName);
|
||||
skTeamVO.setTotalItems(0);
|
||||
skTeamVO.setFinishedItems(0);
|
||||
skTeamVO.setCompletionRate(BigDecimal.ZERO);
|
||||
progressMap.put(skWorkType, skTeamVO);
|
||||
teamItemsMap.put(skWorkType, new ArrayList<>());
|
||||
}
|
||||
|
||||
// 创建收款项目
|
||||
DlRepairTitemRespVO skItemVO = new DlRepairTitemRespVO();
|
||||
skItemVO.setId("sk");
|
||||
skItemVO.setTicketId(ticketId);
|
||||
skItemVO.setItemName("收款");
|
||||
skItemVO.setItemType("01");
|
||||
skItemVO.setFinished(skFinished);
|
||||
|
||||
// 添加收款项目到财务班组
|
||||
teamItemsMap.get(skWorkType).add(skItemVO);
|
||||
skTeamVO.setTotalItems(skTeamVO.getTotalItems() + 1);
|
||||
if (skFinished) {
|
||||
skTeamVO.setFinishedItems(skTeamVO.getFinishedItems() + 1);
|
||||
}
|
||||
|
||||
// 处理服务顾问班组
|
||||
String fwgwWorkType = "fwgw"; // 服务顾问班组编码
|
||||
String fwgwWorkTypeName = "服务顾问"; // 服务顾问班组名称
|
||||
|
||||
TicketTeamProgressWithItemsVO fwgwTeamVO = progressMap.get(fwgwWorkType);
|
||||
if (fwgwTeamVO == null) {
|
||||
fwgwTeamVO = new TicketTeamProgressWithItemsVO();
|
||||
fwgwTeamVO.setWorkType(fwgwWorkType);
|
||||
fwgwTeamVO.setWorkTypeName(fwgwWorkTypeName);
|
||||
fwgwTeamVO.setTotalItems(0);
|
||||
fwgwTeamVO.setFinishedItems(0);
|
||||
fwgwTeamVO.setCompletionRate(BigDecimal.ZERO);
|
||||
progressMap.put(fwgwWorkType, fwgwTeamVO);
|
||||
teamItemsMap.put(fwgwWorkType, new ArrayList<>());
|
||||
}
|
||||
|
||||
// 创建出厂检验项目
|
||||
DlRepairTitemRespVO jsgdItemVO = new DlRepairTitemRespVO();
|
||||
jsgdItemVO.setId("jsgd");
|
||||
jsgdItemVO.setTicketId(ticketId);
|
||||
jsgdItemVO.setItemName("出厂检验");
|
||||
jsgdItemVO.setItemType("01");
|
||||
jsgdItemVO.setFinished(jsgdFinished);
|
||||
|
||||
// 创建交车项目
|
||||
DlRepairTitemRespVO jcItemVO = new DlRepairTitemRespVO();
|
||||
jcItemVO.setId("jc");
|
||||
jcItemVO.setTicketId(ticketId);
|
||||
jcItemVO.setItemName("交车");
|
||||
jcItemVO.setItemType("01");
|
||||
jcItemVO.setFinished(jcFinished);
|
||||
|
||||
// 创建结算项目
|
||||
DlRepairTitemRespVO jssqItemVO = new DlRepairTitemRespVO();
|
||||
jssqItemVO.setId("jssq");
|
||||
jssqItemVO.setTicketId(ticketId);
|
||||
jssqItemVO.setItemName("结算");
|
||||
jssqItemVO.setItemType("01");
|
||||
jssqItemVO.setFinished(jssqFinished);
|
||||
|
||||
// 添加服务顾问项目到服务顾问班组
|
||||
teamItemsMap.get(fwgwWorkType).add(jsgdItemVO);
|
||||
teamItemsMap.get(fwgwWorkType).add(jcItemVO);
|
||||
teamItemsMap.get(fwgwWorkType).add(jssqItemVO);
|
||||
|
||||
fwgwTeamVO.setTotalItems(fwgwTeamVO.getTotalItems() + 3);
|
||||
if (jsgdFinished) {
|
||||
fwgwTeamVO.setFinishedItems(fwgwTeamVO.getFinishedItems() + 1);
|
||||
}
|
||||
if (jcFinished) {
|
||||
fwgwTeamVO.setFinishedItems(fwgwTeamVO.getFinishedItems() + 1);
|
||||
}
|
||||
if (jssqFinished) {
|
||||
fwgwTeamVO.setFinishedItems(fwgwTeamVO.getFinishedItems() + 1);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查工单是否存在指定类型的记录
|
||||
*
|
||||
* @param ticketId 工单ID
|
||||
* @param type 记录类型
|
||||
* @return 是否存在该类型记录
|
||||
*/
|
||||
private boolean hasRecordType(String ticketId, String type) {
|
||||
return repairRecordsService.count(Wrappers.<RepairRecords>lambdaQuery()
|
||||
.eq(RepairRecords::getTicketId, ticketId)
|
||||
.eq(RepairRecords::getType, type)) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据工单ID和班组统计该班组下工时项目完成情况
|
||||
*
|
||||
@ -1588,6 +1748,7 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
|
||||
Map<String, Object> node = new HashMap<>();
|
||||
node.put("code", code);
|
||||
node.put("name", name);
|
||||
|
||||
node.put("selectType", selectType);
|
||||
|
||||
if (ifShowChildren) {
|
||||
@ -2649,7 +2810,7 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
|
||||
// repairTicketsReqVO.setIsFinish("1");
|
||||
} else if (userRoleCode.equals(RepairRoleEnum.INSPECTION.getCode())) {
|
||||
// 总检
|
||||
repairTicketsReqVO.setNowRepairId(loginUserId.toString());
|
||||
repairTicketsReqVO.setNowRepairId(loginUserId);
|
||||
// 因为完成状态需要在交车之后,所以注掉这个
|
||||
// repairTicketsReqVO.setIsFinish("0");
|
||||
} else {
|
||||
@ -3238,7 +3399,7 @@ public class DlRepairTicketsServiceImpl extends ServiceImpl<DlRepairTicketsMappe
|
||||
List<DlRepairTickets> updateTickets = result.stream().map(item -> {
|
||||
DlRepairTickets ticket = new DlRepairTickets();
|
||||
ticket.setId(item.getId());
|
||||
ticket.setNowRepairId(item.getAdviserId());
|
||||
ticket.setNowRepairId(Long.valueOf(item.getAdviserId()));
|
||||
ticket.setNowRepairName(item.getAdviserName());
|
||||
return ticket;
|
||||
}).collect(Collectors.toList());
|
||||
|
||||
Loading…
Reference in New Issue
Block a user