|
|
|
|
@ -22,10 +22,13 @@ import org.springblade.modules.business.pojo.dto.workorder.WorkOrderDTO; |
|
|
|
|
import org.springblade.modules.business.pojo.entity.workorder.WorkOrder; |
|
|
|
|
import org.springblade.modules.business.pojo.entity.workorder.WorkOrderApproval; |
|
|
|
|
import org.springblade.modules.business.pojo.vo.workorder.WorkOrderVO; |
|
|
|
|
import org.springblade.modules.business.service.IMessageService; |
|
|
|
|
import org.springblade.modules.business.service.IWorkOrderApprovalService; |
|
|
|
|
import org.springblade.modules.business.service.IWorkOrderFlowService; |
|
|
|
|
import org.springblade.modules.business.service.IWorkOrderService; |
|
|
|
|
import org.springblade.modules.system.pojo.entity.Dept; |
|
|
|
|
import org.springblade.modules.system.pojo.entity.User; |
|
|
|
|
import org.springblade.modules.system.service.IUserService; |
|
|
|
|
import org.springframework.web.bind.annotation.*; |
|
|
|
|
|
|
|
|
|
import java.io.BufferedReader; |
|
|
|
|
@ -50,455 +53,467 @@ import java.util.Map; |
|
|
|
|
@RequestMapping(CommonConstant.APPLICATION_PROJECT + "/work-order") |
|
|
|
|
public class WorkOrderController extends BladeController { |
|
|
|
|
|
|
|
|
|
private final IWorkOrderService workOrderService; |
|
|
|
|
|
|
|
|
|
private final IWorkOrderApprovalService approvalService; |
|
|
|
|
|
|
|
|
|
private final IWorkOrderFlowService flowService; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 查询工作订单列表 |
|
|
|
|
* |
|
|
|
|
* @param workOrderDTO 工作订单DTO,包含查询条件 |
|
|
|
|
* @param query 分页查询对象 |
|
|
|
|
* @return 返回工作订单列表的响应对象 |
|
|
|
|
*/ |
|
|
|
|
@GetMapping("/page") |
|
|
|
|
public R<IPage<WorkOrder>> page(WorkOrderDTO workOrderDTO, Query query) { |
|
|
|
|
// 创建工作订单的查询条件包装器
|
|
|
|
|
LambdaQueryWrapper<WorkOrder> wrapper = Wrappers.lambdaQuery(WorkOrder.class); |
|
|
|
|
|
|
|
|
|
// 数据权限
|
|
|
|
|
if (StringUtils.isNotBlank(workOrderDTO.getDataType())) { |
|
|
|
|
switch (workOrderDTO.getDataType()) { |
|
|
|
|
case "1": |
|
|
|
|
// 客户
|
|
|
|
|
wrapper.and(wrp -> wrp.eq(WorkOrder::getCreateUser, AuthUtil.getUserId()).or().eq(WorkOrder::getReportUnit, AuthUtil.getDeptId())); |
|
|
|
|
break; |
|
|
|
|
case "2": |
|
|
|
|
// 客服
|
|
|
|
|
// eq.in(WorkOrder::getCreateDept, Func.toLongList(AuthUtil.getDeptId()));
|
|
|
|
|
wrapper.ne(WorkOrder::getStatus, WorkOrderStatusEnum.KH_ORDER_DRAFT.getValue()); |
|
|
|
|
break; |
|
|
|
|
case "3": |
|
|
|
|
// 维修负责人
|
|
|
|
|
wrapper.ge(WorkOrder::getStatus, WorkOrderStatusEnum.WX_ORDER_ACCEPT.getValue()); |
|
|
|
|
break; |
|
|
|
|
case "4": |
|
|
|
|
// 维修人员
|
|
|
|
|
wrapper.eq(WorkOrder::getRepairPerson, AuthUtil.getUserId()); |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
log.error("数据权限设置失败"); |
|
|
|
|
return R.fail("数据权限设置失败"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 设置查询条件:故障地点、故障类型、创建时间范围,并按创建时间降序排序
|
|
|
|
|
wrapper.eq(StringUtils.isNotBlank(workOrderDTO.getFaultLocation()), WorkOrder::getFaultLocation, workOrderDTO.getFaultLocation()); |
|
|
|
|
wrapper.eq(StringUtils.isNotBlank(workOrderDTO.getFaultType()), WorkOrder::getFaultType, workOrderDTO.getFaultType()); |
|
|
|
|
if (StringUtils.isNotBlank(workOrderDTO.getStatusSearch())) { |
|
|
|
|
wrapper.in(WorkOrder::getStatus, workOrderDTO.getStatusSearch().split(",")); |
|
|
|
|
} |
|
|
|
|
wrapper.like(StringUtils.isNotBlank(workOrderDTO.getRequirementCode()), WorkOrder::getRequirementCode, workOrderDTO.getRequirementCode()); |
|
|
|
|
wrapper.between(workOrderDTO.getStartTime() != null && workOrderDTO.getEndTime() != null, WorkOrder::getCreateTime, workOrderDTO.getStartTime(), workOrderDTO.getEndTime()); |
|
|
|
|
wrapper.orderByDesc(WorkOrder::getCreateTime); |
|
|
|
|
|
|
|
|
|
// 执行分页查询
|
|
|
|
|
IPage<WorkOrder> pages = workOrderService.page(Condition.getPage(query), wrapper); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pages.getRecords().forEach(order -> { |
|
|
|
|
Dept dept = DeptCache.getDept(order.getReportUnit()); |
|
|
|
|
if (Func.isNotEmpty(dept)) { |
|
|
|
|
order.setReportUnitName(dept.getDeptName()); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
// 返回查询结果
|
|
|
|
|
return R.data(pages); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 客服查询自己提报的订单列表 |
|
|
|
|
* |
|
|
|
|
* @param workOrderDTO 工作订单DTO,包含查询条件 |
|
|
|
|
* @param query 分页查询对象 |
|
|
|
|
* @return 返回工作订单列表的响应对象 |
|
|
|
|
*/ |
|
|
|
|
@GetMapping("/service-page") |
|
|
|
|
public R<IPage<WorkOrder>> servicePage(WorkOrderDTO workOrderDTO, Query query) { |
|
|
|
|
// 创建工作订单的查询条件包装器
|
|
|
|
|
LambdaQueryWrapper<WorkOrder> wrapper = Wrappers.lambdaQuery(WorkOrder.class); |
|
|
|
|
wrapper.eq(WorkOrder::getCreateUser, AuthUtil.getUserId()); |
|
|
|
|
// 设置查询条件:故障地点、故障类型、创建时间范围,并按创建时间降序排序
|
|
|
|
|
wrapper.eq(StringUtils.isNotBlank(workOrderDTO.getFaultLocation()), WorkOrder::getFaultLocation, workOrderDTO.getFaultLocation()); |
|
|
|
|
wrapper.eq(StringUtils.isNotBlank(workOrderDTO.getFaultType()), WorkOrder::getFaultType, workOrderDTO.getFaultType()); |
|
|
|
|
if (StringUtils.isNotBlank(workOrderDTO.getStatusSearch())) { |
|
|
|
|
wrapper.in(WorkOrder::getStatus, workOrderDTO.getStatusSearch().split(",")); |
|
|
|
|
} |
|
|
|
|
wrapper.like(StringUtils.isNotBlank(workOrderDTO.getRequirementCode()), WorkOrder::getRequirementCode, workOrderDTO.getRequirementCode()); |
|
|
|
|
wrapper.between(workOrderDTO.getStartTime() != null && workOrderDTO.getEndTime() != null, WorkOrder::getCreateTime, workOrderDTO.getStartTime(), workOrderDTO.getEndTime()); |
|
|
|
|
wrapper.orderByDesc(WorkOrder::getCreateTime); |
|
|
|
|
|
|
|
|
|
// 执行分页查询
|
|
|
|
|
IPage<WorkOrder> pages = workOrderService.page(Condition.getPage(query), wrapper); |
|
|
|
|
|
|
|
|
|
pages.getRecords().forEach(order -> { |
|
|
|
|
Dept dept = DeptCache.getDept(order.getReportUnit()); |
|
|
|
|
if (Func.isNotEmpty(dept)) { |
|
|
|
|
order.setReportUnitName(dept.getDeptName()); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
// 返回查询结果
|
|
|
|
|
return R.data(pages); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 工单表 详情 |
|
|
|
|
*/ |
|
|
|
|
@GetMapping("/detail") |
|
|
|
|
public R<WorkOrderVO> detail(WorkOrder workOrder) { |
|
|
|
|
WorkOrderVO detail = workOrderService.detail(workOrder); |
|
|
|
|
return R.data(detail); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 保存工单并提交 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-保存工单并提交") |
|
|
|
|
@PostMapping("/customer-save") |
|
|
|
|
public R customerSave(@RequestBody List<WorkOrderVO> workOrder) { |
|
|
|
|
return R.status(workOrderService.saveAndSubmit(workOrder)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 保存工单为草稿 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-保存工单为草稿") |
|
|
|
|
@PostMapping("/customer-draft") |
|
|
|
|
public R customerDraft(@RequestBody List<WorkOrderVO> workOrder) { |
|
|
|
|
return R.status(workOrderService.saveDraft(workOrder)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 客服保存工单并提交 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-客服保存工单并提交") |
|
|
|
|
@PostMapping("/service-save") |
|
|
|
|
public R serviceSave(@RequestBody List<WorkOrderVO> workOrder) { |
|
|
|
|
return R.status(workOrderService.serviceSaveAndSubmit(workOrder)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 客服工单为草稿 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-客服工单为草稿") |
|
|
|
|
@PostMapping("/service-draft") |
|
|
|
|
public R serviceDraft(@RequestBody List<WorkOrderVO> workOrder) { |
|
|
|
|
return R.status(workOrderService.serviceSave(workOrder)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 修改工单信息 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-修改工单信息") |
|
|
|
|
@PostMapping("/update") |
|
|
|
|
public R update(@RequestBody WorkOrderVO workOrder) { |
|
|
|
|
return R.status(workOrderService.updateAttach(workOrder)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 客服审核指定维修人员 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-客服审核指定维修人员") |
|
|
|
|
@PostMapping("/service-to-serviceman") |
|
|
|
|
public R serviceToServiceman(@RequestBody WorkOrder workOrder) { |
|
|
|
|
WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); |
|
|
|
|
workOrderOld.setRepairPerson(workOrder.getRepairPerson()); |
|
|
|
|
workOrderOld.setDispatchTime(DateUtil.now()); |
|
|
|
|
workOrderOld.setPlanCompleteTime(workOrder.getPlanCompleteTime()); |
|
|
|
|
workOrderOld.setRemark(workOrder.getRemark()); |
|
|
|
|
workOrderOld.setCustomerOpinion(workOrder.getCustomerOpinion()); |
|
|
|
|
workOrderOld.setStatus(WorkOrderStatusEnum.KF_ORDER_ALLOT.getValue()); |
|
|
|
|
workOrderService.updateById(workOrderOld); |
|
|
|
|
// todo 审核通过
|
|
|
|
|
|
|
|
|
|
return R.success(""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 维修人员接收工单 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-维修人员接收工单") |
|
|
|
|
@PostMapping("/serviceman-receive") |
|
|
|
|
public R serviceReceive(@RequestBody WorkOrder workOrder) { |
|
|
|
|
WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); |
|
|
|
|
workOrderOld.setReceiveOrderTime(DateUtil.now()); |
|
|
|
|
workOrderOld.setStatus(WorkOrderStatusEnum.WX_ORDER_ACCEPT.getValue()); |
|
|
|
|
workOrderService.updateById(workOrderOld); |
|
|
|
|
|
|
|
|
|
// todo 审核通过
|
|
|
|
|
|
|
|
|
|
return R.success(""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 维修人员拒绝接收工单 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-维修人员拒绝接收工单") |
|
|
|
|
@PostMapping("/serviceman-reject") |
|
|
|
|
public R serviceReject(@RequestBody WorkOrder workOrder) { |
|
|
|
|
WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); |
|
|
|
|
workOrderOld.setRepaiRejectReason(workOrder.getRepaiRejectReason()); |
|
|
|
|
workOrderOld.setStatus(WorkOrderStatusEnum.WX_ORDER_REFUSE.getValue()); |
|
|
|
|
workOrderService.updateById(workOrderOld); |
|
|
|
|
|
|
|
|
|
WorkOrderApproval approval = new WorkOrderApproval(workOrder.getId(), AuthUtil.getUserId(), CommonConstant.FALSE_STR, DateUtil.now(), workOrder.getRepaiRejectReason()); |
|
|
|
|
approvalService.save(approval); |
|
|
|
|
// todo 审核拒绝
|
|
|
|
|
|
|
|
|
|
return R.success(""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 维修人员提交维修方案 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-维修人员提交维修方案") |
|
|
|
|
@PostMapping("/serviceman-submit") |
|
|
|
|
public R serviceSubmit(@RequestBody WorkOrder workOrder) { |
|
|
|
|
workOrderService.repairPlanSubmit(workOrder); |
|
|
|
|
|
|
|
|
|
return R.success(""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 主管确认维修方案 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-主管确认维修方案") |
|
|
|
|
@PostMapping("/supervisor-confirm") |
|
|
|
|
public R supervisorConfirm(@RequestBody WorkOrder workOrder) { |
|
|
|
|
WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); |
|
|
|
|
workOrderOld.setApprovePoint("主管审批维修方案"); |
|
|
|
|
workOrderOld.setApprovePerson(workOrder.getApprovePerson()); |
|
|
|
|
workOrderOld.setApproveResult(workOrder.getApproveResult()); |
|
|
|
|
workOrderOld.setApproveTime(workOrder.getApproveTime()); |
|
|
|
|
workOrderOld.setApproveRemark(workOrder.getApproveRemark()); |
|
|
|
|
workOrderOld.setStatus(WorkOrderStatusEnum.ZG_REPAIR_PLAN_PASS.getValue()); |
|
|
|
|
workOrderService.updateById(workOrderOld); |
|
|
|
|
|
|
|
|
|
WorkOrderApproval approval = new WorkOrderApproval(workOrder.getId(), AuthUtil.getUserId(), CommonConstant.TRUE_STR, DateUtil.now(), workOrder.getApproveRemark()); |
|
|
|
|
approvalService.save(approval); |
|
|
|
|
|
|
|
|
|
return R.success(""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 主管驳回维修方案 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-主管驳回维修方案") |
|
|
|
|
@PostMapping("/supervisor-reject") |
|
|
|
|
public R supervisorReject(@RequestBody WorkOrder workOrder) { |
|
|
|
|
workOrderService.repairPlanRefuse(workOrder); |
|
|
|
|
|
|
|
|
|
return R.success(""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 客户确认维修方案 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-客户确认维修方案") |
|
|
|
|
@PostMapping("/customer-confirm") |
|
|
|
|
public R customerConfirm(@RequestBody WorkOrder workOrder) { |
|
|
|
|
WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); |
|
|
|
|
workOrderOld.setApprovePoint("客户审批维修方案"); |
|
|
|
|
workOrderOld.setApprovePerson(workOrder.getApprovePerson()); |
|
|
|
|
workOrderOld.setApproveResult(workOrder.getApproveResult()); |
|
|
|
|
workOrderOld.setApproveTime(workOrder.getApproveTime()); |
|
|
|
|
workOrderOld.setApproveRemark(workOrder.getApproveRemark()); |
|
|
|
|
workOrderOld.setStatus(WorkOrderStatusEnum.KH_REPAIR_PLAN_PASS.getValue()); |
|
|
|
|
workOrderService.updateById(workOrderOld); |
|
|
|
|
|
|
|
|
|
WorkOrderApproval approval = new WorkOrderApproval(workOrder.getId(), AuthUtil.getUserId(), CommonConstant.TRUE_STR, DateUtil.now(), workOrder.getApproveRemark()); |
|
|
|
|
approvalService.save(approval); |
|
|
|
|
|
|
|
|
|
// todo 审核通过
|
|
|
|
|
|
|
|
|
|
return R.success(""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 客户驳回维修方案 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-客户驳回维修方案") |
|
|
|
|
@PostMapping("/customer-reject") |
|
|
|
|
public R customerReject(@RequestBody WorkOrder workOrder) { |
|
|
|
|
WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); |
|
|
|
|
workOrderOld.setApprovePoint("客户审批维修方案"); |
|
|
|
|
workOrderOld.setApprovePerson(workOrder.getApprovePerson()); |
|
|
|
|
workOrderOld.setApproveResult(workOrder.getApproveResult()); |
|
|
|
|
workOrderOld.setApproveTime(workOrder.getApproveTime()); |
|
|
|
|
workOrderOld.setApproveRemark(workOrder.getApproveRemark()); |
|
|
|
|
workOrderOld.setStatus(WorkOrderStatusEnum.KH_REPAIR_PLAN_REFUSE.getValue()); |
|
|
|
|
workOrderService.updateById(workOrderOld); |
|
|
|
|
|
|
|
|
|
WorkOrderApproval approval = new WorkOrderApproval(workOrder.getId(), AuthUtil.getUserId(), CommonConstant.FALSE_STR, DateUtil.now(), workOrder.getApproveRemark()); |
|
|
|
|
approvalService.save(approval); |
|
|
|
|
// todo 审核通过
|
|
|
|
|
|
|
|
|
|
return R.success(""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 维修人员提交维修结果 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-维修人员提交维修结果") |
|
|
|
|
@PostMapping("/serviceman-repair-submit") |
|
|
|
|
public R servicemanRepairSubmit(@RequestBody WorkOrder workOrder) { |
|
|
|
|
WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); |
|
|
|
|
workOrderOld.setCloseReason(workOrder.getCloseReason()); |
|
|
|
|
workOrderOld.setStatus(WorkOrderStatusEnum.WX_REPAIR_FINISH.getValue()); |
|
|
|
|
workOrderService.updateById(workOrderOld); |
|
|
|
|
|
|
|
|
|
// todo 审核通过
|
|
|
|
|
|
|
|
|
|
return R.success(""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 评价签字 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-评价签字") |
|
|
|
|
@PostMapping("/customer-repair-confirm") |
|
|
|
|
public R customerRepairConfirm(@RequestBody WorkOrder workOrder) { |
|
|
|
|
workOrderService.repairFinish(workOrder); |
|
|
|
|
|
|
|
|
|
return R.success(""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 评价签字 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-客户确认未完成") |
|
|
|
|
@PostMapping("/customer-repair-reject") |
|
|
|
|
public R customerRepairReject(@RequestBody WorkOrder workOrder) { |
|
|
|
|
WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); |
|
|
|
|
workOrderOld.setApprovePoint("客户审批维修结果"); |
|
|
|
|
workOrderOld.setApprovePerson(workOrder.getApprovePerson()); |
|
|
|
|
workOrderOld.setApproveResult(workOrder.getApproveResult()); |
|
|
|
|
workOrderOld.setApproveTime(workOrder.getApproveTime()); |
|
|
|
|
workOrderOld.setApproveRemark(workOrder.getApproveRemark()); |
|
|
|
|
workOrderOld.setStatus(WorkOrderStatusEnum.KH_REPAIR_PLAN_PASS.getValue()); |
|
|
|
|
workOrderService.updateById(workOrderOld); |
|
|
|
|
|
|
|
|
|
WorkOrderApproval approval = new WorkOrderApproval(workOrder.getId(), AuthUtil.getUserId(), CommonConstant.FALSE_STR, DateUtil.now(), workOrder.getApproveRemark()); |
|
|
|
|
approvalService.save(approval); |
|
|
|
|
|
|
|
|
|
// todo 审核通过
|
|
|
|
|
|
|
|
|
|
return R.success(""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 工单表 客服维修完成 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-客服维修完成") |
|
|
|
|
@PostMapping("/service-repair-submit") |
|
|
|
|
public R serviceRepairFinish(@RequestBody WorkOrder workOrder) { |
|
|
|
|
WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); |
|
|
|
|
workOrderOld.setCloseReason(workOrder.getCloseReason()); |
|
|
|
|
workOrderOld.setStatus(WorkOrderStatusEnum.KF_REPAIR_FINISH.getValue()); |
|
|
|
|
workOrderService.updateById(workOrderOld); |
|
|
|
|
|
|
|
|
|
return R.success(""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 工单表 客服关闭 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-工单关闭") |
|
|
|
|
@PostMapping("/service-close") |
|
|
|
|
public R serviceClose(@RequestBody WorkOrder workOrder) { |
|
|
|
|
WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); |
|
|
|
|
workOrderOld.setCloseReason(workOrder.getCloseReason()); |
|
|
|
|
workOrderOld.setStatus(WorkOrderStatusEnum.KF_ORDER_CLOSE.getValue()); |
|
|
|
|
workOrderService.updateById(workOrderOld); |
|
|
|
|
|
|
|
|
|
return R.success(""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 已开发票 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-已开发票") |
|
|
|
|
@PostMapping("/service-invoice") |
|
|
|
|
public R serviceInvoice(@RequestBody List<WorkOrder> orderList) { |
|
|
|
|
List<WorkOrder> orderOldList = new ArrayList<>(); |
|
|
|
|
for (WorkOrder workOrder : orderList) { |
|
|
|
|
WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); |
|
|
|
|
workOrderOld.setStatus(WorkOrderStatusEnum.KF_TICKET_FINISH.getValue()); |
|
|
|
|
orderOldList.add(workOrderOld); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
workOrderService.updateBatchById(orderOldList); |
|
|
|
|
|
|
|
|
|
return R.success(""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 封装百度接口 |
|
|
|
|
* |
|
|
|
|
* @param query |
|
|
|
|
* @return |
|
|
|
|
* @throws Exception |
|
|
|
|
*/ |
|
|
|
|
@GetMapping("/suggestion") |
|
|
|
|
public R suggestion(String query) throws Exception { |
|
|
|
|
String ak = "NqGy7LGcdxNUNqR7pBwPqeOkZ11Arn5Y"; |
|
|
|
|
String url = "https://api.map.baidu.com/place/v2/suggestion?"; |
|
|
|
|
Map params = new LinkedHashMap<String, String>(); |
|
|
|
|
params.put("query", query); |
|
|
|
|
params.put("region", "全国"); |
|
|
|
|
params.put("city_limit", "true"); |
|
|
|
|
params.put("output", "json"); |
|
|
|
|
params.put("ak", ak); |
|
|
|
|
String resultStr = requestGetAK(url, params); |
|
|
|
|
JSONObject jsonObject = new JSONObject(resultStr); |
|
|
|
|
Map<String, Object> map = jsonObject.toMap(); |
|
|
|
|
return R.data(map); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private String requestGetAK(String strUrl, Map<String, String> param) throws Exception { |
|
|
|
|
if (strUrl == null || strUrl.length() <= 0 || param == null || param.size() <= 0) { |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
StringBuffer queryString = new StringBuffer(); |
|
|
|
|
queryString.append(strUrl); |
|
|
|
|
for (Map.Entry<?, ?> pair : param.entrySet()) { |
|
|
|
|
queryString.append(pair.getKey() + "="); |
|
|
|
|
// 第一种方式使用的 jdk 自带的转码方式 第二种方式使用的 spring 的转码方法 两种均可
|
|
|
|
|
queryString.append(URLEncoder.encode((String) pair.getValue(), "UTF-8").replace("+", "%20") + "&"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (queryString.length() > 0) { |
|
|
|
|
queryString.deleteCharAt(queryString.length() - 1); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
URL url = new URL(queryString.toString()); |
|
|
|
|
URLConnection httpConnection = url.openConnection(); |
|
|
|
|
httpConnection.connect(); |
|
|
|
|
|
|
|
|
|
InputStreamReader isr = new InputStreamReader(httpConnection.getInputStream()); |
|
|
|
|
BufferedReader reader = new BufferedReader(isr); |
|
|
|
|
StringBuffer buffer = new StringBuffer(); |
|
|
|
|
String line; |
|
|
|
|
while ((line = reader.readLine()) != null) { |
|
|
|
|
buffer.append(line); |
|
|
|
|
} |
|
|
|
|
reader.close(); |
|
|
|
|
isr.close(); |
|
|
|
|
return buffer.toString(); |
|
|
|
|
} |
|
|
|
|
private final IWorkOrderService workOrderService; |
|
|
|
|
|
|
|
|
|
private final IWorkOrderApprovalService approvalService; |
|
|
|
|
|
|
|
|
|
private final IWorkOrderFlowService flowService; |
|
|
|
|
|
|
|
|
|
private final IUserService userService; |
|
|
|
|
|
|
|
|
|
private final IMessageService messageService; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 查询工作订单列表 |
|
|
|
|
* |
|
|
|
|
* @param workOrderDTO 工作订单DTO,包含查询条件 |
|
|
|
|
* @param query 分页查询对象 |
|
|
|
|
* @return 返回工作订单列表的响应对象 |
|
|
|
|
*/ |
|
|
|
|
@GetMapping("/page") |
|
|
|
|
public R<IPage<WorkOrder>> page(WorkOrderDTO workOrderDTO, Query query) { |
|
|
|
|
// 创建工作订单的查询条件包装器
|
|
|
|
|
LambdaQueryWrapper<WorkOrder> wrapper = Wrappers.lambdaQuery(WorkOrder.class); |
|
|
|
|
|
|
|
|
|
// 数据权限
|
|
|
|
|
if (StringUtils.isNotBlank(workOrderDTO.getDataType())) { |
|
|
|
|
switch (workOrderDTO.getDataType()) { |
|
|
|
|
case "1": |
|
|
|
|
// 客户
|
|
|
|
|
wrapper.and(wrp -> wrp.eq(WorkOrder::getCreateUser, AuthUtil.getUserId()).or().eq(WorkOrder::getReportUnit, AuthUtil.getDeptId())); |
|
|
|
|
break; |
|
|
|
|
case "2": |
|
|
|
|
// 客服
|
|
|
|
|
// eq.in(WorkOrder::getCreateDept, Func.toLongList(AuthUtil.getDeptId()));
|
|
|
|
|
wrapper.ne(WorkOrder::getStatus, WorkOrderStatusEnum.KH_ORDER_DRAFT.getValue()); |
|
|
|
|
break; |
|
|
|
|
case "3": |
|
|
|
|
// 维修负责人
|
|
|
|
|
wrapper.ge(WorkOrder::getStatus, WorkOrderStatusEnum.WX_ORDER_ACCEPT.getValue()); |
|
|
|
|
break; |
|
|
|
|
case "4": |
|
|
|
|
// 维修人员
|
|
|
|
|
wrapper.eq(WorkOrder::getRepairPerson, AuthUtil.getUserId()); |
|
|
|
|
break; |
|
|
|
|
default: |
|
|
|
|
log.error("数据权限设置失败"); |
|
|
|
|
return R.fail("数据权限设置失败"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// 设置查询条件:故障地点、故障类型、创建时间范围,并按创建时间降序排序
|
|
|
|
|
wrapper.eq(StringUtils.isNotBlank(workOrderDTO.getFaultLocation()), WorkOrder::getFaultLocation, workOrderDTO.getFaultLocation()); |
|
|
|
|
wrapper.eq(StringUtils.isNotBlank(workOrderDTO.getFaultType()), WorkOrder::getFaultType, workOrderDTO.getFaultType()); |
|
|
|
|
if (StringUtils.isNotBlank(workOrderDTO.getStatusSearch())) { |
|
|
|
|
wrapper.in(WorkOrder::getStatus, workOrderDTO.getStatusSearch().split(",")); |
|
|
|
|
} |
|
|
|
|
wrapper.like(StringUtils.isNotBlank(workOrderDTO.getRequirementCode()), WorkOrder::getRequirementCode, workOrderDTO.getRequirementCode()); |
|
|
|
|
wrapper.between(workOrderDTO.getStartTime() != null && workOrderDTO.getEndTime() != null, WorkOrder::getCreateTime, workOrderDTO.getStartTime(), workOrderDTO.getEndTime()); |
|
|
|
|
wrapper.orderByDesc(WorkOrder::getCreateTime); |
|
|
|
|
|
|
|
|
|
// 执行分页查询
|
|
|
|
|
IPage<WorkOrder> pages = workOrderService.page(Condition.getPage(query), wrapper); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
pages.getRecords().forEach(order -> { |
|
|
|
|
Dept dept = DeptCache.getDept(order.getReportUnit()); |
|
|
|
|
if (Func.isNotEmpty(dept)) { |
|
|
|
|
order.setReportUnitName(dept.getDeptName()); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
// 返回查询结果
|
|
|
|
|
return R.data(pages); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 客服查询自己提报的订单列表 |
|
|
|
|
* |
|
|
|
|
* @param workOrderDTO 工作订单DTO,包含查询条件 |
|
|
|
|
* @param query 分页查询对象 |
|
|
|
|
* @return 返回工作订单列表的响应对象 |
|
|
|
|
*/ |
|
|
|
|
@GetMapping("/service-page") |
|
|
|
|
public R<IPage<WorkOrder>> servicePage(WorkOrderDTO workOrderDTO, Query query) { |
|
|
|
|
// 创建工作订单的查询条件包装器
|
|
|
|
|
LambdaQueryWrapper<WorkOrder> wrapper = Wrappers.lambdaQuery(WorkOrder.class); |
|
|
|
|
wrapper.eq(WorkOrder::getCreateUser, AuthUtil.getUserId()); |
|
|
|
|
// 设置查询条件:故障地点、故障类型、创建时间范围,并按创建时间降序排序
|
|
|
|
|
wrapper.eq(StringUtils.isNotBlank(workOrderDTO.getFaultLocation()), WorkOrder::getFaultLocation, workOrderDTO.getFaultLocation()); |
|
|
|
|
wrapper.eq(StringUtils.isNotBlank(workOrderDTO.getFaultType()), WorkOrder::getFaultType, workOrderDTO.getFaultType()); |
|
|
|
|
if (StringUtils.isNotBlank(workOrderDTO.getStatusSearch())) { |
|
|
|
|
wrapper.in(WorkOrder::getStatus, workOrderDTO.getStatusSearch().split(",")); |
|
|
|
|
} |
|
|
|
|
wrapper.like(StringUtils.isNotBlank(workOrderDTO.getRequirementCode()), WorkOrder::getRequirementCode, workOrderDTO.getRequirementCode()); |
|
|
|
|
wrapper.between(workOrderDTO.getStartTime() != null && workOrderDTO.getEndTime() != null, WorkOrder::getCreateTime, workOrderDTO.getStartTime(), workOrderDTO.getEndTime()); |
|
|
|
|
wrapper.orderByDesc(WorkOrder::getCreateTime); |
|
|
|
|
|
|
|
|
|
// 执行分页查询
|
|
|
|
|
IPage<WorkOrder> pages = workOrderService.page(Condition.getPage(query), wrapper); |
|
|
|
|
|
|
|
|
|
pages.getRecords().forEach(order -> { |
|
|
|
|
Dept dept = DeptCache.getDept(order.getReportUnit()); |
|
|
|
|
if (Func.isNotEmpty(dept)) { |
|
|
|
|
order.setReportUnitName(dept.getDeptName()); |
|
|
|
|
} |
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
// 返回查询结果
|
|
|
|
|
return R.data(pages); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 工单表 详情 |
|
|
|
|
*/ |
|
|
|
|
@GetMapping("/detail") |
|
|
|
|
public R<WorkOrderVO> detail(WorkOrder workOrder) { |
|
|
|
|
WorkOrderVO detail = workOrderService.detail(workOrder); |
|
|
|
|
return R.data(detail); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 保存工单并提交 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-保存工单并提交") |
|
|
|
|
@PostMapping("/customer-save") |
|
|
|
|
public R customerSave(@RequestBody List<WorkOrderVO> workOrder) { |
|
|
|
|
return R.status(workOrderService.saveAndSubmit(workOrder)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 保存工单为草稿 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-保存工单为草稿") |
|
|
|
|
@PostMapping("/customer-draft") |
|
|
|
|
public R customerDraft(@RequestBody List<WorkOrderVO> workOrder) { |
|
|
|
|
return R.status(workOrderService.saveDraft(workOrder)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 客服保存工单并提交 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-客服保存工单并提交") |
|
|
|
|
@PostMapping("/service-save") |
|
|
|
|
public R serviceSave(@RequestBody List<WorkOrderVO> workOrder) { |
|
|
|
|
return R.status(workOrderService.serviceSaveAndSubmit(workOrder)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 客服工单为草稿 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-客服工单为草稿") |
|
|
|
|
@PostMapping("/service-draft") |
|
|
|
|
public R serviceDraft(@RequestBody List<WorkOrderVO> workOrder) { |
|
|
|
|
return R.status(workOrderService.serviceSave(workOrder)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 修改工单信息 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-修改工单信息") |
|
|
|
|
@PostMapping("/update") |
|
|
|
|
public R update(@RequestBody WorkOrderVO workOrder) { |
|
|
|
|
return R.status(workOrderService.updateAttach(workOrder)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 客服审核指定维修人员 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-客服审核指定维修人员") |
|
|
|
|
@PostMapping("/service-to-serviceman") |
|
|
|
|
public R serviceToServiceman(@RequestBody WorkOrder workOrder) { |
|
|
|
|
WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); |
|
|
|
|
workOrderOld.setRepairPerson(workOrder.getRepairPerson()); |
|
|
|
|
workOrderOld.setDispatchTime(DateUtil.now()); |
|
|
|
|
workOrderOld.setPlanCompleteTime(workOrder.getPlanCompleteTime()); |
|
|
|
|
workOrderOld.setRemark(workOrder.getRemark()); |
|
|
|
|
workOrderOld.setCustomerOpinion(workOrder.getCustomerOpinion()); |
|
|
|
|
workOrderOld.setStatus(WorkOrderStatusEnum.KF_ORDER_ALLOT.getValue()); |
|
|
|
|
workOrderService.updateById(workOrderOld); |
|
|
|
|
User repairPerson = userService.getById(workOrder.getRepairPerson()); |
|
|
|
|
messageService.saveMessage(workOrder.getRequirementCode(), "您已接收新的维修单,请尽快处理", repairPerson.getId(), 2); |
|
|
|
|
// todo 审核通过
|
|
|
|
|
|
|
|
|
|
return R.success(""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 维修人员接收工单 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-维修人员接收工单") |
|
|
|
|
@PostMapping("/serviceman-receive") |
|
|
|
|
public R serviceReceive(@RequestBody WorkOrder workOrder) { |
|
|
|
|
WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); |
|
|
|
|
workOrderOld.setReceiveOrderTime(DateUtil.now()); |
|
|
|
|
workOrderOld.setStatus(WorkOrderStatusEnum.WX_ORDER_ACCEPT.getValue()); |
|
|
|
|
workOrderService.updateById(workOrderOld); |
|
|
|
|
|
|
|
|
|
// todo 审核通过
|
|
|
|
|
|
|
|
|
|
return R.success(""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 维修人员拒绝接收工单 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-维修人员拒绝接收工单") |
|
|
|
|
@PostMapping("/serviceman-reject") |
|
|
|
|
public R serviceReject(@RequestBody WorkOrder workOrder) { |
|
|
|
|
WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); |
|
|
|
|
workOrderOld.setRepaiRejectReason(workOrder.getRepaiRejectReason()); |
|
|
|
|
workOrderOld.setStatus(WorkOrderStatusEnum.WX_ORDER_REFUSE.getValue()); |
|
|
|
|
workOrderService.updateById(workOrderOld); |
|
|
|
|
|
|
|
|
|
WorkOrderApproval approval = new WorkOrderApproval(workOrder.getId(), AuthUtil.getUserId(), CommonConstant.FALSE_STR, DateUtil.now(), workOrder.getRepaiRejectReason()); |
|
|
|
|
approvalService.save(approval); |
|
|
|
|
// todo 审核拒绝
|
|
|
|
|
|
|
|
|
|
return R.success(""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 维修人员提交维修方案 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-维修人员提交维修方案") |
|
|
|
|
@PostMapping("/serviceman-submit") |
|
|
|
|
public R serviceSubmit(@RequestBody WorkOrder workOrder) { |
|
|
|
|
workOrderService.repairPlanSubmit(workOrder); |
|
|
|
|
|
|
|
|
|
return R.success(""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 主管确认维修方案 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-主管确认维修方案") |
|
|
|
|
@PostMapping("/supervisor-confirm") |
|
|
|
|
public R supervisorConfirm(@RequestBody WorkOrder workOrder) { |
|
|
|
|
WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); |
|
|
|
|
workOrderOld.setApprovePoint("主管审批维修方案"); |
|
|
|
|
workOrderOld.setApprovePerson(workOrder.getApprovePerson()); |
|
|
|
|
workOrderOld.setApproveResult(workOrder.getApproveResult()); |
|
|
|
|
workOrderOld.setApproveTime(workOrder.getApproveTime()); |
|
|
|
|
workOrderOld.setApproveRemark(workOrder.getApproveRemark()); |
|
|
|
|
workOrderOld.setStatus(WorkOrderStatusEnum.ZG_REPAIR_PLAN_PASS.getValue()); |
|
|
|
|
workOrderService.updateById(workOrderOld); |
|
|
|
|
|
|
|
|
|
WorkOrderApproval approval = new WorkOrderApproval(workOrder.getId(), AuthUtil.getUserId(), CommonConstant.TRUE_STR, DateUtil.now(), workOrder.getApproveRemark()); |
|
|
|
|
approvalService.save(approval); |
|
|
|
|
messageService.saveMessage(workOrder.getRequirementCode(), "维修方案已提交,请确认", workOrder.getInformant(), 2); |
|
|
|
|
return R.success(""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 主管驳回维修方案 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-主管驳回维修方案") |
|
|
|
|
@PostMapping("/supervisor-reject") |
|
|
|
|
public R supervisorReject(@RequestBody WorkOrder workOrder) { |
|
|
|
|
workOrderService.repairPlanRefuse(workOrder); |
|
|
|
|
|
|
|
|
|
return R.success(""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 客户确认维修方案 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-客户确认维修方案") |
|
|
|
|
@PostMapping("/customer-confirm") |
|
|
|
|
public R customerConfirm(@RequestBody WorkOrder workOrder) { |
|
|
|
|
WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); |
|
|
|
|
workOrderOld.setApprovePoint("客户审批维修方案"); |
|
|
|
|
workOrderOld.setApprovePerson(workOrder.getApprovePerson()); |
|
|
|
|
workOrderOld.setApproveResult(workOrder.getApproveResult()); |
|
|
|
|
workOrderOld.setApproveTime(workOrder.getApproveTime()); |
|
|
|
|
workOrderOld.setApproveRemark(workOrder.getApproveRemark()); |
|
|
|
|
workOrderOld.setStatus(WorkOrderStatusEnum.KH_REPAIR_PLAN_PASS.getValue()); |
|
|
|
|
workOrderService.updateById(workOrderOld); |
|
|
|
|
|
|
|
|
|
WorkOrderApproval approval = new WorkOrderApproval(workOrder.getId(), AuthUtil.getUserId(), CommonConstant.TRUE_STR, DateUtil.now(), workOrder.getApproveRemark()); |
|
|
|
|
approvalService.save(approval); |
|
|
|
|
messageService.saveMessage(workOrder.getRequirementCode(), "维修方案已通过,请尽快维修", workOrder.getRepairPerson(), 2); |
|
|
|
|
// todo 审核通过
|
|
|
|
|
|
|
|
|
|
return R.success(""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 客户驳回维修方案 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-客户驳回维修方案") |
|
|
|
|
@PostMapping("/customer-reject") |
|
|
|
|
public R customerReject(@RequestBody WorkOrder workOrder) { |
|
|
|
|
WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); |
|
|
|
|
workOrderOld.setApprovePoint("客户审批维修方案"); |
|
|
|
|
workOrderOld.setApprovePerson(workOrder.getApprovePerson()); |
|
|
|
|
workOrderOld.setApproveResult(workOrder.getApproveResult()); |
|
|
|
|
workOrderOld.setApproveTime(workOrder.getApproveTime()); |
|
|
|
|
workOrderOld.setApproveRemark(workOrder.getApproveRemark()); |
|
|
|
|
workOrderOld.setStatus(WorkOrderStatusEnum.KH_REPAIR_PLAN_REFUSE.getValue()); |
|
|
|
|
workOrderService.updateById(workOrderOld); |
|
|
|
|
|
|
|
|
|
WorkOrderApproval approval = new WorkOrderApproval(workOrder.getId(), AuthUtil.getUserId(), CommonConstant.FALSE_STR, DateUtil.now(), workOrder.getApproveRemark()); |
|
|
|
|
approvalService.save(approval); |
|
|
|
|
String role = "1839537055389515777"; |
|
|
|
|
User user = userService.getOne(Wrappers.lambdaQuery(User.class).eq(User::getRoleId, role)); |
|
|
|
|
messageService.saveMessage(workOrder.getRequirementCode(), "审批方案已驳回,请重新修改", user.getId(), 2); |
|
|
|
|
// todo 审核通过
|
|
|
|
|
|
|
|
|
|
return R.success(""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 维修人员提交维修结果 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-维修人员提交维修结果") |
|
|
|
|
@PostMapping("/serviceman-repair-submit") |
|
|
|
|
public R servicemanRepairSubmit(@RequestBody WorkOrder workOrder) { |
|
|
|
|
WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); |
|
|
|
|
workOrderOld.setCloseReason(workOrder.getCloseReason()); |
|
|
|
|
workOrderOld.setStatus(WorkOrderStatusEnum.WX_REPAIR_FINISH.getValue()); |
|
|
|
|
workOrderService.updateById(workOrderOld); |
|
|
|
|
messageService.saveMessage(workOrder.getRequirementCode(), "维修已完成,请确认是否解决", workOrder.getInformant(), 2); |
|
|
|
|
|
|
|
|
|
// todo 审核通过
|
|
|
|
|
|
|
|
|
|
return R.success(""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 评价签字 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-评价签字") |
|
|
|
|
@PostMapping("/customer-repair-confirm") |
|
|
|
|
public R customerRepairConfirm(@RequestBody WorkOrder workOrder) { |
|
|
|
|
workOrderService.repairFinish(workOrder); |
|
|
|
|
|
|
|
|
|
return R.success(""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 评价签字 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-客户确认未完成") |
|
|
|
|
@PostMapping("/customer-repair-reject") |
|
|
|
|
public R customerRepairReject(@RequestBody WorkOrder workOrder) { |
|
|
|
|
WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); |
|
|
|
|
workOrderOld.setApprovePoint("客户审批维修结果"); |
|
|
|
|
workOrderOld.setApprovePerson(workOrder.getApprovePerson()); |
|
|
|
|
workOrderOld.setApproveResult(workOrder.getApproveResult()); |
|
|
|
|
workOrderOld.setApproveTime(workOrder.getApproveTime()); |
|
|
|
|
workOrderOld.setApproveRemark(workOrder.getApproveRemark()); |
|
|
|
|
workOrderOld.setStatus(WorkOrderStatusEnum.KH_REPAIR_PLAN_PASS.getValue()); |
|
|
|
|
workOrderService.updateById(workOrderOld); |
|
|
|
|
|
|
|
|
|
WorkOrderApproval approval = new WorkOrderApproval(workOrder.getId(), AuthUtil.getUserId(), CommonConstant.FALSE_STR, DateUtil.now(), workOrder.getApproveRemark()); |
|
|
|
|
approvalService.save(approval); |
|
|
|
|
messageService.saveMessage(workOrder.getRequirementCode(), "客户认为维修未完成,请尽快再次解决", workOrder.getRepairPerson(), 2); |
|
|
|
|
// todo 审核通过
|
|
|
|
|
|
|
|
|
|
return R.success(""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 工单表 客服维修完成 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-客服维修完成") |
|
|
|
|
@PostMapping("/service-repair-submit") |
|
|
|
|
public R serviceRepairFinish(@RequestBody WorkOrder workOrder) { |
|
|
|
|
WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); |
|
|
|
|
workOrderOld.setCloseReason(workOrder.getCloseReason()); |
|
|
|
|
workOrderOld.setStatus(WorkOrderStatusEnum.KF_REPAIR_FINISH.getValue()); |
|
|
|
|
workOrderService.updateById(workOrderOld); |
|
|
|
|
User customer = userService.getById(workOrder.getInformant()); |
|
|
|
|
messageService.saveMessage(workOrder.getRequirementCode(), "请注意维修单评价", customer.getId(), 2); |
|
|
|
|
return R.success(""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 工单表 客服关闭 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-工单关闭") |
|
|
|
|
@PostMapping("/service-close") |
|
|
|
|
public R serviceClose(@RequestBody WorkOrder workOrder) { |
|
|
|
|
WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); |
|
|
|
|
workOrderOld.setCloseReason(workOrder.getCloseReason()); |
|
|
|
|
workOrderOld.setStatus(WorkOrderStatusEnum.KF_ORDER_CLOSE.getValue()); |
|
|
|
|
workOrderService.updateById(workOrderOld); |
|
|
|
|
|
|
|
|
|
return R.success(""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 已开发票 |
|
|
|
|
*/ |
|
|
|
|
@ApiLog(value = "提报管理-已开发票") |
|
|
|
|
@PostMapping("/service-invoice") |
|
|
|
|
public R serviceInvoice(@RequestBody List<WorkOrder> orderList) { |
|
|
|
|
List<WorkOrder> orderOldList = new ArrayList<>(); |
|
|
|
|
for (WorkOrder workOrder : orderList) { |
|
|
|
|
WorkOrder workOrderOld = workOrderService.getById(workOrder.getId()); |
|
|
|
|
workOrderOld.setStatus(WorkOrderStatusEnum.KF_TICKET_FINISH.getValue()); |
|
|
|
|
orderOldList.add(workOrderOld); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
workOrderService.updateBatchById(orderOldList); |
|
|
|
|
|
|
|
|
|
return R.success(""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* 封装百度接口 |
|
|
|
|
* |
|
|
|
|
* @param query |
|
|
|
|
* @return |
|
|
|
|
* @throws Exception |
|
|
|
|
*/ |
|
|
|
|
@GetMapping("/suggestion") |
|
|
|
|
public R suggestion(String query) throws Exception { |
|
|
|
|
String ak = "NqGy7LGcdxNUNqR7pBwPqeOkZ11Arn5Y"; |
|
|
|
|
String url = "https://api.map.baidu.com/place/v2/suggestion?"; |
|
|
|
|
Map params = new LinkedHashMap<String, String>(); |
|
|
|
|
params.put("query", query); |
|
|
|
|
params.put("region", "全国"); |
|
|
|
|
params.put("city_limit", "true"); |
|
|
|
|
params.put("output", "json"); |
|
|
|
|
params.put("ak", ak); |
|
|
|
|
String resultStr = requestGetAK(url, params); |
|
|
|
|
JSONObject jsonObject = new JSONObject(resultStr); |
|
|
|
|
Map<String, Object> map = jsonObject.toMap(); |
|
|
|
|
return R.data(map); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private String requestGetAK(String strUrl, Map<String, String> param) throws Exception { |
|
|
|
|
if (strUrl == null || strUrl.length() <= 0 || param == null || param.size() <= 0) { |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
StringBuffer queryString = new StringBuffer(); |
|
|
|
|
queryString.append(strUrl); |
|
|
|
|
for (Map.Entry<?, ?> pair : param.entrySet()) { |
|
|
|
|
queryString.append(pair.getKey() + "="); |
|
|
|
|
// 第一种方式使用的 jdk 自带的转码方式 第二种方式使用的 spring 的转码方法 两种均可
|
|
|
|
|
queryString.append(URLEncoder.encode((String) pair.getValue(), "UTF-8").replace("+", "%20") + "&"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if (queryString.length() > 0) { |
|
|
|
|
queryString.deleteCharAt(queryString.length() - 1); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
URL url = new URL(queryString.toString()); |
|
|
|
|
URLConnection httpConnection = url.openConnection(); |
|
|
|
|
httpConnection.connect(); |
|
|
|
|
|
|
|
|
|
InputStreamReader isr = new InputStreamReader(httpConnection.getInputStream()); |
|
|
|
|
BufferedReader reader = new BufferedReader(isr); |
|
|
|
|
StringBuffer buffer = new StringBuffer(); |
|
|
|
|
String line; |
|
|
|
|
while ((line = reader.readLine()) != null) { |
|
|
|
|
buffer.append(line); |
|
|
|
|
} |
|
|
|
|
reader.close(); |
|
|
|
|
isr.close(); |
|
|
|
|
return buffer.toString(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|