feat:人工处理流程

This commit is contained in:
dzc committed 2025-04-18 19:38:31 +08:00
1 parent b27be081af
commit 7a10979276
9 files changed
+116 -30

No files matched your search

+20 -18
View File
@@ -373,24 +373,26 @@ CREATE TABLE hard_broadcast
DROP TABLE IF EXISTS hard_auth;
CREATE TABLE hard_auth
(
id bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
auth_type varchar(32) DEFAULT NULL COMMENT '授权类型如微信小程序、支付宝、浙政钉',
user_id bigint NOT NULL COMMENT '预定用户',
hard_id bigint NOT NULL COMMENT '硬件id',
cabinet_no int DEFAULT NULL COMMENT '货柜编号',
auth_status char(1) DEFAULT '0' COMMENT '是否授权',
auth_time datetime DEFAULT NULL COMMENT '授权时间',
is_done char(1) DEFAULT '0' COMMENT '是否完成',
is_done_time datetime DEFAULT NULL COMMENT '完成时间',
is_manual_change varchar(32) DEFAULT NULL COMMENT '是否人工处理',
manual_change_time datetime DEFAULT NULL COMMENT '人工处理时间',
manual_change_remark varchar(512) DEFAULT NULL COMMENT '人工处理备注',
create_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人',
create_time datetime DEFAULT NULL COMMENT '创建时间',
update_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '修改人',
update_time datetime DEFAULT NULL COMMENT '修改时间',
del_flag char(1) COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标记',
tenant_id bigint DEFAULT NULL COMMENT '租户ID',
id bigint NOT NULL AUTO_INCREMENT COMMENT '编号',
auth_type varchar(32) DEFAULT NULL COMMENT '授权类型如微信小程序、支付宝、浙政钉',
user_id bigint NOT NULL COMMENT '预定用户',
hard_id bigint NOT NULL COMMENT '硬件id',
cabinet_no int DEFAULT NULL COMMENT '货柜编号',
auth_status char(1) DEFAULT '0' COMMENT '是否授权',
auth_time datetime DEFAULT NULL COMMENT '授权时间',
is_done char(1) DEFAULT '0' COMMENT '是否完成',
is_done_time datetime DEFAULT NULL COMMENT '完成时间',
is_manual_change varchar(32) DEFAULT NULL COMMENT '是否人工处理',
manual_change_user_id bigint DEFAULT NULL COMMENT '人工处理用户id',
manual_change_time datetime DEFAULT NULL COMMENT '人工处理时间',
manual_change_remark varchar(128) DEFAULT NULL COMMENT '人工处理备注',
manual_change_pic varchar(512) DEFAULT NULL COMMENT '人工处理图片',
create_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '创建人',
create_time datetime DEFAULT NULL COMMENT '创建时间',
update_by varchar(64) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '修改人',
update_time datetime DEFAULT NULL COMMENT '修改时间',
del_flag char(1) COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '删除标记',
tenant_id bigint DEFAULT NULL COMMENT '租户ID',
PRIMARY KEY (id)
) ENGINE = InnoDB COMMENT ='硬件授权';
@@ -0,0 +1,27 @@
package com.bsd.pjcloud.hard.api.dto;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
@Data
public class HardAuthErrorChangeDto {
/**
* 流程id
*/
@NotNull(message = "流程id不能为空")
private Long flowId;
/**
* 处理图片
*/
private String image;
/**
* 处理原因
*/
@NotEmpty(message = "请输入处理原因")
private String remark;
}
@@ -83,6 +83,12 @@ public class HardAuthEntity extends Model<HardAuthEntity> {
@Schema(description = "是否人工处理")
private String isManualChange;
/**
* 人工处理用户id
*/
@Schema(description = "人工处理用户id")
private Long manualChangeUserId;
/**
* 人工处理时间
*/
@@ -92,9 +98,15 @@ public class HardAuthEntity extends Model<HardAuthEntity> {
/**
* 人工处理备注
*/
@Schema(description = "人工处理时间")
@Schema(description = "人工处理备注")
private String manualChangeRemark;
/**
* 人工处理图片
*/
@Schema(description = "人工处理图片")
private String manualChangePic;
/**
* 创建人
*/
@@ -1,6 +1,7 @@
package com.bsd.pjcloud.hard.api.vo;
import com.bsd.pjcloud.admin.api.vo.base.BaseUserDeptInterface;
import com.bsd.pjcloud.hard.api.entity.HardAuthEntity;
import com.bsd.pjcloud.hard.api.entity.HardDoorFlowEntity;
import com.bsd.pjcloud.hard.api.vo.base.BaseHardInterface;
import lombok.Data;
@@ -32,5 +33,7 @@ public class HardDoorFlowVo extends HardDoorFlowEntity implements BaseHardInterf
private String userDeptName;
private HardAuthEntity hardAuth;
}
@@ -6,12 +6,11 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.bsd.pjcloud.common.core.util.R;
import com.bsd.pjcloud.common.data.datascope.DataScope;
import com.bsd.pjcloud.common.idempotent.annotation.Idempotent;
import com.bsd.pjcloud.common.log.annotation.SysLog;
import com.bsd.pjcloud.common.security.service.PjcloudUser;
import com.bsd.pjcloud.common.security.util.SecurityUtils;
import com.bsd.pjcloud.hard.api.dto.HardAuthAppDto;
import com.bsd.pjcloud.hard.api.dto.HardAuthDto;
import com.bsd.pjcloud.hard.api.dto.HardGetAuthAppDto;
import com.bsd.pjcloud.hard.api.dto.*;
import com.bsd.pjcloud.hard.api.entity.HardAuthEntity;
import com.bsd.pjcloud.hard.api.vo.HardAuthVo;
import com.bsd.pjcloud.hard.api.vo.HardGetAuthAppVo;
@@ -25,6 +24,7 @@ import org.springframework.http.HttpHeaders;
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@@ -61,6 +61,15 @@ public class HardAuthController {
/* ************************************* end app end ************************************* */
@Operation(summary = "流程错误手动处理", description = "流程错误手动处理")
@PostMapping("/error-change")
@Idempotent(expireTime = 5, info = "正在开门中,请勿重复操作")
public R errorChange(@Validated @RequestBody HardAuthErrorChangeDto dto) {
PjcloudUser user = SecurityUtils.getUser();
hardAuthService.errorChange(dto, user.getId());
return R.ok();
}
@Operation(summary = "分页查询", description = "分页查询")
@GetMapping("/page-join")
@PreAuthorize("@pms.hasPermission('hard_hardAuth_view')")
@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.bsd.pjcloud.common.data.datascope.DataScope;
import com.bsd.pjcloud.hard.api.dto.HardAuthAppDto;
import com.bsd.pjcloud.hard.api.dto.HardAuthDto;
import com.bsd.pjcloud.hard.api.dto.HardAuthErrorChangeDto;
import com.bsd.pjcloud.hard.api.dto.HardGetAuthAppDto;
import com.bsd.pjcloud.hard.api.entity.HardAuthEntity;
import com.bsd.pjcloud.hard.api.vo.HardAuthVo;
@@ -29,4 +30,9 @@ public interface HardAuthService extends IService<HardAuthEntity> {
* 判断当前用户信誉
*/
boolean judgeUserCredit(Long userId);
/**
* 流程错误手动处理
*/
void errorChange(HardAuthErrorChangeDto dto, Long userId);
}
@@ -14,26 +14,25 @@ import com.bsd.pjcloud.common.data.datascope.DataScope;
import com.bsd.pjcloud.hard.api.constant.HardAuthTypeEnum;
import com.bsd.pjcloud.hard.api.constant.flow.HardDoorFlowBizEnum;
import com.bsd.pjcloud.hard.api.constant.HardDoorOpenTypeEnum;
import com.bsd.pjcloud.hard.api.dto.HardAuthAppDto;
import com.bsd.pjcloud.hard.api.dto.HardAuthDto;
import com.bsd.pjcloud.hard.api.dto.HardDoorFlowOpenDto;
import com.bsd.pjcloud.hard.api.dto.HardGetAuthAppDto;
import com.bsd.pjcloud.hard.api.dto.*;
import com.bsd.pjcloud.hard.api.dto.manager.HardManagerDto;
import com.bsd.pjcloud.hard.api.entity.HardAuthEntity;
import com.bsd.pjcloud.hard.api.entity.HardDoorFlowEntity;
import com.bsd.pjcloud.hard.api.entity.manager.HardManagerEntity;
import com.bsd.pjcloud.hard.api.utils.HardUtil;
import com.bsd.pjcloud.hard.api.vo.HardAuthVo;
import com.bsd.pjcloud.hard.api.vo.HardGetAuthAppVo;
import com.bsd.pjcloud.hard.api.vo.manager.HardDoorManagerVo;
import com.bsd.pjcloud.hard.mapper.HardAuthMapper;
import com.bsd.pjcloud.hard.mapper.manager.HardDoorManagerMapper;
import com.bsd.pjcloud.hard.mapper.manager.HardManagerMapper;
import com.bsd.pjcloud.hard.service.HardAuthService;
import com.bsd.pjcloud.hard.service.HardDoorFlowService;
import com.bsd.pjcloud.hard.service.HardDoorManagerService;
import com.bsd.pjcloud.hard.service.HardOrderService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.validation.annotation.Validated;
import java.time.LocalDateTime;
@@ -51,9 +50,9 @@ public class HardAuthServiceImpl extends ServiceImpl<HardAuthMapper, HardAuthEnt
private final HardDoorManagerService hardDoorManagerService;
private final HardDoorFlowService hardDoorFlowService;
private final HardOrderService hardOrderService;
private final HardManagerMapper hardManagerMapper;
private final HardDoorManagerMapper hardDoorManagerMapper;
private final RemoteUserService remoteUserService;
@@ -130,6 +129,29 @@ public class HardAuthServiceImpl extends ServiceImpl<HardAuthMapper, HardAuthEnt
return count <= 5;
}
/**
* 流程错误手动处理
*/
@Override
@Transactional(rollbackFor = Exception.class)
public void errorChange(HardAuthErrorChangeDto dto, Long userId) {
HardDoorFlowEntity hardDoorFlow = hardDoorFlowService.getById(dto.getFlowId());
if (ObjectUtil.isEmpty(hardDoorFlow)) {
throw new RuntimeException("智能柜子购买流程不存在");
}
HardAuthEntity hardAuth = baseMapper.selectById(hardDoorFlow.getAuthId());
HardAuthEntity updateObj = new HardAuthEntity();
updateObj.setId(hardAuth.getId());
updateObj.setManualChangeUserId(userId);
updateObj.setIsManualChange(YesNoEnum.YES.getCode());
updateObj.setManualChangeTime(LocalDateTime.now());
updateObj.setManualChangeRemark(dto.getRemark());
updateObj.setManualChangePic(dto.getImage());
baseMapper.updateById(updateObj);
// 更新订单状态
hardOrderService.cancelHardDoorOrder(hardDoorFlow.getOrderId());
}
private void disposeList(List<HardAuthVo> list, HardAuthDto dto) {
if (ObjectUtil.isEmpty(list)) return;
// 设备
@@ -518,6 +518,11 @@ public class HardDoorFlowServiceImpl extends ServiceImpl<HardDoorFlowMapper, Har
if (ObjectUtil.isNotEmpty(hardManager)) {
HardUtil.convertHard(detail, hardManager);
}
// 设备id
HardAuthEntity hardAuth = hardAuthService.getById(detail.getAuthId());
if (ObjectUtil.isNotEmpty(hardAuth)) {
detail.setHardAuth(hardAuth);
}
}
private HardDoorFlowServiceImpl getSelf() {
@@ -242,8 +242,8 @@ public class HardSpuServiceImpl extends ServiceImpl<HardSpuMapper, HardSpuEntity
if (ObjectUtil.equals(spuDetail.getPrice(), 0)) {
throw new RuntimeException("商品价格不能为0");
}
if (spuDetail.getRepertoryCount() <= 0) {
throw new RuntimeException("商品库存不能小于0");
if (ObjectUtil.isEmpty(spuDetail.getSpuCategoryId())) {
throw new RuntimeException("请编辑商品分类");
}
return spuDetail;
}