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.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();
}
}

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

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

@ -11,7 +11,7 @@ import java.util.List;
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);

@ -22,16 +22,17 @@ public class MessageServiceImpl extends BaseServiceImpl<MessageMapper, Message>
/**
* 保存消息
*
* @param title
* @param requirementCode
* @param content
* @param messageUser
* @param messageType
*/
@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();
saveInformation.setRequirementCode(requirementCode);
saveInformation.setSystemType("1");
saveInformation.setTitle(title);
saveInformation.setTitle("需求单");
saveInformation.setContent(content);
saveInformation.setMessageUser(messageUser);
saveInformation.setTenantId(AuthUtil.getTenantId());

@ -118,6 +118,8 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
@Transactional(rollbackFor = Exception.class)
@Synchronized
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");
Date now = DateUtil.date();
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 code = "WX-" + todayStr + "-" + hz;
messageService.saveMessage(code, "您有一个需求单需要处理", customerService.getId(), 2);
workOrder.setFillingTime(now);
workOrder.setRequirementCode(code);
// 待接单
@ -263,6 +266,10 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
// 更新设备状态为故障
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)
@ -283,6 +290,7 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
// 更新设备状态为运行中
deviceService.updateStatus(CommonConstant.DEVICE_RUN_STATUS_WORKING, workOrder.getDeviceId());
messageService.saveMessage(workOrder.getRequirementCode(), "维修方案审批未通过,请重新提交方案", workOrder.getRepairPerson(), 2);
}
@Transactional(rollbackFor = Exception.class)
@ -315,6 +323,10 @@ public class WorkOrderServiceImpl extends BaseServiceImpl<WorkOrderMapper, WorkO
// 更新设备状态为运行中
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) {

Loading…
Cancel
Save