Compare commits

...

5 Commits

Author SHA1 Message Date
薛宏祥 3d22d94f39 维修流程通知消息开发 1 year ago
薛宏祥 dd4342dd35 通知信息开发 1 year ago
薛宏祥 1838a85a22 通知信息开发 1 year ago
薛宏祥 05831880f6 通知信息开发 1 year ago
薛宏祥 c3714ed05c 巡检报修中添加申领物料 1 year ago
  1. 917
      src/main/java/org/springblade/modules/business/contraller/WorkOrderController.java
  2. 3
      src/main/java/org/springblade/modules/business/pojo/entity/MaintenanceTaskDetailGoods.java
  3. 3
      src/main/java/org/springblade/modules/business/pojo/entity/Message.java
  4. 2
      src/main/java/org/springblade/modules/business/service/IMessageService.java
  5. 7
      src/main/java/org/springblade/modules/business/service/impl/MessageServiceImpl.java
  6. 12
      src/main/java/org/springblade/modules/business/service/impl/WorkOrderServiceImpl.java

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

@ -20,6 +20,9 @@ public class MaintenanceTaskDetailGoods extends BaseEntity {
//库存id //库存id
private String warehouseId; private String warehouseId;
//产品id
private String productId;
//规格 //规格
private String rule; private String rule;

@ -37,4 +37,7 @@ public class Message extends BaseEntity {
private Long messageUser; private Long messageUser;
//需求单号
private String requirementCode;
} }

@ -11,7 +11,7 @@ import java.util.List;
public interface IMessageService extends BaseService<Message> { public interface IMessageService extends BaseService<Message> {
void saveMessage(String title, String content, Long messageUser, Integer messageType); void saveMessage(String requirementCode, String content, Long messageUser, Integer messageType);
PageVO getMessageList(Integer current, Integer size, LocalDate start, LocalDate end, Integer status); PageVO getMessageList(Integer current, Integer size, LocalDate start, LocalDate end, Integer status);

@ -22,16 +22,17 @@ public class MessageServiceImpl extends BaseServiceImpl<MessageMapper, Message>
/** /**
* 保存消息 * 保存消息
* *
* @param title * @param requirementCode
* @param content * @param content
* @param messageUser * @param messageUser
* @param messageType * @param messageType
*/ */
@Override @Override
public void saveMessage(String title, String content, Long messageUser, Integer messageType) { public void saveMessage(String requirementCode, String content, Long messageUser, Integer messageType) {
Message saveInformation = new Message(); Message saveInformation = new Message();
saveInformation.setRequirementCode(requirementCode);
saveInformation.setSystemType("1"); saveInformation.setSystemType("1");
saveInformation.setTitle(title); saveInformation.setTitle("需求单");
saveInformation.setContent(content); saveInformation.setContent(content);
saveInformation.setMessageUser(messageUser); saveInformation.setMessageUser(messageUser);
saveInformation.setTenantId(AuthUtil.getTenantId()); saveInformation.setTenantId(AuthUtil.getTenantId());

@ -118,6 +118,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@Synchronized @Synchronized
public boolean saveAndSubmit(List<WorkOrderVO> workOrders) { public boolean saveAndSubmit(List<WorkOrderVO> workOrders) {
String role = "1839536982874193922";
User customerService = userService.getOne(Wrappers.lambdaQuery(User.class).eq(User::getRoleId, role));
SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd");
Date now = DateUtil.date(); Date now = DateUtil.date();
String todayStr = format.format(now); String todayStr = format.format(now);
@ -131,6 +133,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
// 查询今天已提报数量 // 查询今天已提报数量
String hz = count < 9 ? "0" + (count + 1) : count + 1 + ""; String hz = count < 9 ? "0" + (count + 1) : count + 1 + "";
String code = "WX-" + todayStr + "-" + hz; String code = "WX-" + todayStr + "-" + hz;
messageService.saveMessage(code, "您有一个需求单需要处理", customerService.getId(), 2);
workOrder.setFillingTime(now); workOrder.setFillingTime(now);
workOrder.setRequirementCode(code); workOrder.setRequirementCode(code);
// 待接单 // 待接单
@ -263,6 +266,10 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
// 更新设备状态为故障 // 更新设备状态为故障
deviceService.updateStatus(CommonConstant.DEVICE_RUN_STATUS_BREAKDOWN, workOrder.getDeviceId()); deviceService.updateStatus(CommonConstant.DEVICE_RUN_STATUS_BREAKDOWN, workOrder.getDeviceId());
//发送消息给主管
String role = "1839537055389515777";
User user = userService.getOne(Wrappers.lambdaQuery(User.class).eq(User::getRoleId, role));
messageService.saveMessage(workOrder.getRequirementCode(), "维修方案已提交,请审批", user.getId(), 2);
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@ -283,6 +290,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
// 更新设备状态为运行中 // 更新设备状态为运行中
deviceService.updateStatus(CommonConstant.DEVICE_RUN_STATUS_WORKING, workOrder.getDeviceId()); deviceService.updateStatus(CommonConstant.DEVICE_RUN_STATUS_WORKING, workOrder.getDeviceId());
messageService.saveMessage(workOrder.getRequirementCode(), "维修方案审批未通过,请重新提交方案", workOrder.getRepairPerson(), 2);
} }
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@ -315,6 +323,10 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
// 更新设备状态为运行中 // 更新设备状态为运行中
deviceService.updateStatus(CommonConstant.DEVICE_RUN_STATUS_WORKING, workOrder.getDeviceId()); deviceService.updateStatus(CommonConstant.DEVICE_RUN_STATUS_WORKING, workOrder.getDeviceId());
String role = "1839536982874193922";
User user = userService.getOne(Wrappers.lambdaQuery(User.class).eq(User::getRoleId, role));
messageService.saveMessage(workOrder.getRequirementCode(), "已完成维修,请确认客户是否付款", user.getId(), 2);
} }
private void saveFiles(List<WorkOrderAttach> videoAttaches, List<WorkOrderAttach> picAttaches, Long orderId) { private void saveFiles(List<WorkOrderAttach> videoAttaches, List<WorkOrderAttach> picAttaches, Long orderId) {

Loading…
Cancel
Save