drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/entity/GdWorkOrderEntity.java
@@ -72,7 +72,7 @@ /** * 工单状态:0草稿、10发布中_接单中、11发布中_拒绝接单、20响应中_待拆分、21响应中_申请取消、22响应中_申请修改、23响应中_已取消、30执行中_待全部完成、31执行中_协商修改、40完成待验_待全部验收、50验收通过_待结算、60结算完成_已结算 */ @ApiModelProperty(value = "工单状态:0草稿、10发布中_接单中、11发布中_拒绝接单、20响应中_待拆分、21响应中_申请取消、22响应中_申请修改、23响应中_已取消、30执行中_待全部完成、31执行中_协商修改、40完成待验_待全部验收、50验收通过_待结算、60结算完成_已结算") @ApiModelProperty(value = "工单状态:0草稿、10发布中_接单中、11发布中_拒绝接单、20响应中_待拆分、21响应中_申请取消、22响应中_申请修改、23响应中_已取消、24响应中_拒绝取消、25响应中_拒绝修改 30执行中_待全部完成、31执行中_协商修改、40完成待验_待全部验收、50验收通过_待结算、60结算完成_已结算") @TableField("work_order_status") private String workOrderStatus; /** drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/enums/WorkOrderStatusEnum.java
@@ -75,6 +75,16 @@ RESPONDING_CANCELED("23", "响应中_已取消", "接单响应"), /** * 响应中_拒绝取消 */ RESPONDING_REJECT_CANCEL("24", "响应中_拒绝取消", "接单响应"), /** * 响应中_拒绝修改 */ RESPONDING_REJECT_MODIFY("25", "响应中_拒绝修改", "接单响应"), /** * 执行中_待全部完成 */ EXECUTING_TO_BE_COMPLETED("30", "执行中_待全部完成", "执行中"), @@ -169,12 +179,12 @@ * @param code 状态码 * @return 枚举对象 */ public static WorkOrderStatusEnum getByCode(Byte code) { public static WorkOrderStatusEnum getByCode(String code) { if (code == null) { return null; } for (WorkOrderStatusEnum status : values()) { if (status.getCode().equals(code)) { if (code.equals(status.getCode())) { return status; } } @@ -186,7 +196,7 @@ * @param code 状态码 * @return 状态描述 */ public static String getDescByCode(Byte code) { public static String getDescByCode(String code) { WorkOrderStatusEnum status = getByCode(code); return status != null ? status.getDesc() : null; } @@ -196,7 +206,42 @@ * @param code 状态码 * @return 是否有效 */ public static boolean isValid(Byte code) { public static boolean isValid(String code) { return getByCode(code) != null; } /** * 检查当前状态是否允许指定的操作类型 * @param operationType 操作类型:1接单,2拒接接单,3申请取消,4申请修改, 5同意取消 6不同意取消 7.同意修改 8.不同意修改 * @return 是否允许操作 */ public boolean isAllowedOperation(Integer operationType) { if (operationType == null) { return false; } switch (this) { case PUBLISHING_ACCEPTING: // 发布中_接单中状态允许:1接单,2拒接接单 return operationType == 1 || operationType == 2; case RESPONDING_TO_BE_SPLIT: // 响应中_待拆分状态允许:3申请取消,4申请修改 return operationType == 3 || operationType == 4 ; case RESPONDING_APPLY_CANCEL: // 响应中_申请取消状态允许:6同意取消,8不同意取消 return operationType == 5 || operationType == 6; case RESPONDING_APPLY_MODIFY: // 响应中_申请修改状态允许:7同意修改,9不同意修改 return operationType ==7 || operationType == 8 ; case RESPONDING_REJECT_CANCEL: // 响应中_拒绝取消状态允许:1接单 return operationType == 3; case RESPONDING_REJECT_MODIFY: // 响应中_拒绝修改状态允许:1接单 return operationType == 4; default: // 其他状态不允许操作 return false; } } } drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/param/WorkOrderStatusParam.java
@@ -23,7 +23,7 @@ /** * 操作类型:1接单,2拒接接单 */ @ApiModelProperty(value = "操作类型:1接单,2拒接接单", required = true) @ApiModelProperty(value = "操作类型:1接单,2拒接接单,3申请取消,4申请修改, 5同意取消 6不同意取消 7.同意修改 7.不同意修改 ", required = true) @NotNull(message = "操作类型不能为空") private Integer operationType; drone-service/drone-gd/src/main/java/org/sxkj/gd/workorder/service/impl/GdWorkOrderServiceImpl.java
@@ -152,30 +152,60 @@ return false; } // 检查工单当前状态是否为发布中_接单中(10) if (!workOrder.getWorkOrderStatus().equals(WorkOrderStatusEnum.PUBLISHING_ACCEPTING.getCode())) { // 检查当前状态是否允许该操作类型 WorkOrderStatusEnum currentStatus = WorkOrderStatusEnum.getByCode(workOrder.getWorkOrderStatus()); if (currentStatus == null || !currentStatus.isAllowedOperation(statusParam.getOperationType())) { return false; } // 操作类型:1接单,2拒接接单 // 操作类型:1接单,2拒接接单,3申请取消,4申请修改, 5同意取消 6不同意取消 7.同意修改 8.不同意修改 Integer operationType = statusParam.getOperationType(); String newStatus = null; String flowName = null; String flowDesc = null; if (operationType == 1) { // 接单操作:更新状态为响应中_待拆分(20) newStatus = WorkOrderStatusEnum.RESPONDING_TO_BE_SPLIT.getCode(); flowName = WorkOrderStatusEnum.RESPONDING_TO_BE_SPLIT.getStageDesc(); flowDesc = AuthUtil.getUserName() + " " + org.springblade.core.tool.utils.DateUtil.format(new Date(), CommonConstant.YYYY_MM_DD_HH_MM_SS); } else if (operationType == 2) { // 拒接接单操作:更新状态为发布中_拒绝接单(11) newStatus = WorkOrderStatusEnum.PUBLISHING_REJECTING.getCode(); flowName = WorkOrderStatusEnum.PUBLISHING_REJECTING.getStageDesc(); flowDesc = AuthUtil.getUserName() + " " + org.springblade.core.tool.utils.DateUtil.format(new Date(), CommonConstant.YYYY_MM_DD_HH_MM_SS); } else { // 无效的操作类型 return false; // 统一设置流转描述前缀 String flowDesc = AuthUtil.getUserName() + " " + org.springblade.core.tool.utils.DateUtil.format(new Date(), CommonConstant.YYYY_MM_DD_HH_MM_SS); switch (operationType) { case 1: case 7: // 接单操作:更新状态为响应中_待拆分(20) newStatus = WorkOrderStatusEnum.RESPONDING_TO_BE_SPLIT.getCode(); flowName = WorkOrderStatusEnum.RESPONDING_TO_BE_SPLIT.getStageDesc(); break; case 2: // 拒接接单操作:更新状态为发布中_拒绝接单(11) newStatus = WorkOrderStatusEnum.PUBLISHING_REJECTING.getCode(); flowName = WorkOrderStatusEnum.PUBLISHING_REJECTING.getStageDesc(); break; case 3: // 申请取消操作:更新状态为响应中_申请取消(21) newStatus = WorkOrderStatusEnum.RESPONDING_APPLY_CANCEL.getCode(); flowName = WorkOrderStatusEnum.RESPONDING_APPLY_CANCEL.getStageDesc(); break; case 4: // 申请修改操作:更新状态为响应中_申请修改(22) newStatus = WorkOrderStatusEnum.RESPONDING_APPLY_MODIFY.getCode(); flowName = WorkOrderStatusEnum.RESPONDING_APPLY_MODIFY.getStageDesc(); break; case 5: // 已取消操作:更新状态为响应中_已取消(23) newStatus = WorkOrderStatusEnum.RESPONDING_CANCELED.getCode(); flowName = WorkOrderStatusEnum.RESPONDING_CANCELED.getStageDesc(); break; case 6: // 已取消操作:更新状态为响应中_已取消(24) newStatus = WorkOrderStatusEnum.RESPONDING_REJECT_CANCEL.getCode(); flowName = WorkOrderStatusEnum.RESPONDING_REJECT_CANCEL.getStageDesc(); break; case 8: // 已取消操作:更新状态为响应中_已取消(25) newStatus = WorkOrderStatusEnum.RESPONDING_REJECT_MODIFY.getCode(); flowName = WorkOrderStatusEnum.RESPONDING_REJECT_MODIFY.getStageDesc(); break; default: // 无效的操作类型 return false; } // 更新工单状态