feat: 设备管理优化-0512-增加移除设备的审批流程

dev_kcyj
chenhc 1 year ago
parent 11754a27bb
commit 770caa552c

@ -32,6 +32,10 @@ public class Constant {
public static final String DH_ORDER = "DH"; //到货
public static final String TH_ORDER = "TH"; //退货
public static final String DEV_DDJ = "DDJ"; //设备登记
public static final String DEV_DBG = "DBG"; //设备变更
public static final String DEV_DYC = "DYC"; //设备移除
/**
*

@ -59,6 +59,20 @@ public class SysApprovalFlowConfigController {
@ApiOperation(value = "新增配置详情")
@PostMapping("/udiwms/sysApprovalFlowConfig/addConfigDetail")
public BaseResponse addConfigDetail(@RequestBody @Valid SysApprovalFlowAddDetailRequest sysApprovalFlowAddDetailRequest) {
Integer approvalNodeType = sysApprovalFlowAddDetailRequest.getApprovalNodeType();
if (approvalNodeType == 1){
String approvalUserId = sysApprovalFlowAddDetailRequest.getApprovalUserId();
String approvalUserName = sysApprovalFlowAddDetailRequest.getApprovalUserName();
if (StringUtil.isEmpty(approvalUserId)) return ResultVOUtils.error("审批人主键不可以为空!");
if (StringUtil.isEmpty(approvalUserName)) return ResultVOUtils.error("审批人名称不可以为空!");
}else if(approvalNodeType == 2){
String approvalPostId = sysApprovalFlowAddDetailRequest.getApprovalPostId();
String approvalPostName = sysApprovalFlowAddDetailRequest.getApprovalPostName();
if (StringUtil.isEmpty(approvalPostId)) return ResultVOUtils.error("审批岗位序号不可以为空!");
if (StringUtil.isEmpty(approvalPostName)) return ResultVOUtils.error("审批岗位名称不可以为空!");
}
int i = sysApprovalFlowConfigService.addConfigDetail(sysApprovalFlowAddDetailRequest);
return ResultVOUtils.success();
}

@ -1,17 +1,42 @@
package com.glxp.api.controller.basic;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.glxp.api.common.res.BaseResponse;
import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.entity.auth.AuthAdmin;
import com.glxp.api.entity.auth.DeptEntity;
import com.glxp.api.entity.basic.SysApprovalFlow;
import com.glxp.api.entity.dev.DeviceChangeLogEntity;
import com.glxp.api.entity.dev.DeviceChangeOrderEntity;
import com.glxp.api.entity.dev.DeviceChangeOrderItemEntity;
import com.glxp.api.enums.ApprovalFlowEnum;
import com.glxp.api.enums.dev.DeviceChangeStatusEnum;
import com.glxp.api.enums.dev.DeviceChangeTypeEnum;
import com.glxp.api.enums.dev.DeviceStatusEnum;
import com.glxp.api.exception.JsonException;
import com.glxp.api.req.basic.SubmitApprovalFlowRequest;
import com.glxp.api.res.basic.SysApprovalFlowDetailResponse;
import com.glxp.api.service.auth.CustomerService;
import com.glxp.api.service.auth.DeptService;
import com.glxp.api.service.basic.SysApprovalFlowService;
import com.glxp.api.service.dev.DeviceChangeLogService;
import com.glxp.api.service.dev.DeviceChangeOrderItemService;
import com.glxp.api.service.dev.DeviceChangeOrderService;
import com.glxp.api.service.dev.DeviceInfoService;
import com.glxp.api.service.system.SystemParamConfigService;
import com.glxp.api.vo.dev.DeviceChangeOrderVo;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.validation.Valid;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
@Slf4j
@ -22,6 +47,18 @@ public class SysApprovalFlowController {
private SysApprovalFlowService sysApprovalFlowService;
@Resource
private SystemParamConfigService systemParamConfigService;
@Resource
private DeviceChangeOrderService deviceChangeOrderService;
@Resource
private DeviceChangeOrderItemService deviceChangeOrderItemService;
@Resource
private DeviceInfoService deviceInfoService;
@Resource
private DeviceChangeLogService deviceChangeLogService;
@Resource
private DeptService deptService;
@Resource
private CustomerService customerService;
@ApiOperation(value = "获取流程审批过程")
@GetMapping("/udiwms/sysApprovalFlow/approvalFlowDetailList/{approvalFlowId}")
@ -44,4 +81,72 @@ public class SysApprovalFlowController {
return ResultVOUtils.success(sys_approval_flow);
}
@ApiOperation(value = "是否有节点审批权限")
@GetMapping("/sysApprovalFlow/nodePermissions/{id}")
public BaseResponse nodePermissions(@PathVariable String id) {
boolean b = sysApprovalFlowService.nodePermissions(id);
return ResultVOUtils.success(b);
}
@ApiOperation(value = "提交节点审批-设备一处")
@PostMapping("/udiwms/sysApprovalFlow/submitApprovalFlow/sbyc")
@Transactional(rollbackFor = Exception.class)
public BaseResponse submitApprovalFlowSbyc(@RequestBody @Valid SubmitApprovalFlowRequest submitApprovalFlowRequest) {
String approvalFlowMxId = submitApprovalFlowRequest.getId();
sysApprovalFlowService.submitApprovalFlow(submitApprovalFlowRequest);
//判断是否是最终状态为 审核通过 是 调用 审核通过的后续方法
SysApprovalFlow sysApprovalFlow = sysApprovalFlowService.getApprovalFlowByMxId(approvalFlowMxId);
Integer status = sysApprovalFlow.getStatus();
if (status.equals(ApprovalFlowEnum.TG.getCode())){
//后续方法
String id = sysApprovalFlow.getId();
DeviceChangeOrderEntity order = deviceChangeOrderService.getOne(Wrappers.lambdaQuery(DeviceChangeOrderEntity.class).eq(DeviceChangeOrderEntity::getApprovalFlowId, id));
if (order == null){
return ResultVOUtils.error("未找到对应的审批流程,请确认");
}
LocalDateTime now = LocalDateTime.now();
Long userId = customerService.getUserId();
AuthAdmin authUserDto = customerService.getUserBean();
//查询创建人名称
String userName = authUserDto.getEmployeeName();
deviceChangeOrderService.update(Wrappers.lambdaUpdate(DeviceChangeOrderEntity.class)
.set(DeviceChangeOrderEntity::getStatus, DeviceChangeStatusEnum.FINISH)
.set(DeviceChangeOrderEntity::getConfirmTime, now)
.set(DeviceChangeOrderEntity::getConfirmUser, userId)
.set(DeviceChangeOrderEntity::getConfirmUserName, userName)
.eq(DeviceChangeOrderEntity::getApprovalFlowId, id)
.eq(DeviceChangeOrderEntity::getStatus, DeviceChangeStatusEnum.AUDITING));
List<DeviceChangeOrderItemEntity> list = deviceChangeOrderItemService.list(Wrappers.lambdaQuery(DeviceChangeOrderItemEntity.class).eq(DeviceChangeOrderItemEntity::getOrderId, order.getOrderId()));
if (CollectionUtil.isEmpty(list)){
return ResultVOUtils.error("单据里待移除设备不存在,请确认");
}
List<DeviceChangeLogEntity> logs = new ArrayList<>();
DeviceChangeOrderVo orderVo = BeanUtil.copyProperties(order, DeviceChangeOrderVo.class);
orderVo.setConfirmTime(now);
orderVo.setConfirmUser(userId);
orderVo.setConfirmUserName(userName);
DeptEntity dept = deptService.selectByCode(orderVo.getDeptCode());
orderVo.setDeptName(dept.getName());
if (orderVo.getToDeptCode().equals(orderVo.getDeptCode())) {
orderVo.setToDeptName(dept.getName());
} else {
dept = deptService.selectByCode(orderVo.getToDeptCode());
orderVo.setToDeptName(dept.getName());
}
list.forEach( i ->{
deviceInfoService.changeStatus(i.getDeviceCode(), order.getDeptCode(), DeviceStatusEnum.NORMAL, order.getType() == DeviceChangeTypeEnum.CHANGE ? DeviceStatusEnum.CHANGE : DeviceStatusEnum.DESTROY);
if (order.getType() == DeviceChangeTypeEnum.DESTROY) {
DeviceChangeLogEntity logEntity = DeviceChangeLogEntity.genEntity(i.getDeviceCode(), orderVo);
logs.add(logEntity);
}
});
if (CollectionUtil.isNotEmpty(logs)) {
deviceChangeLogService.saveBatch(logs);
}
}
return ResultVOUtils.success();
}
}

@ -76,4 +76,16 @@ public class SysApprovalFlow {
@TableField(value = "updateTime")
private Date updateTime;
/**
*
*/
@TableField(value = "nextNodeName")
private String nextNodeName;
/**
*
*/
@TableField(value = "nextApprovalNodeType")
private Integer nextApprovalNodeType;
}

@ -65,4 +65,25 @@ public class SysApprovalFlowConfigMx {
@TableField(value = "updateTime")
private Date updateTime;
/**
*
*/
@TableField(value = "approvalNodeType")
private Integer approvalNodeType;
/**
*
*/
@TableField(value = "approvalPostId")
private String approvalPostId;
/**
*
*/
@TableField(value = "approvalPostName")
private String approvalPostName;
}

@ -84,4 +84,25 @@ public class SysApprovalFlowMx {
@TableField(value = "updateTime")
private Date updateTime;
/**
*
*/
@TableField(value = "approvalNodeType")
private Integer approvalNodeType;
/**
*
*/
@TableField(value = "approvalPostId")
private String approvalPostId;
/**
*
*/
@TableField(value = "approvalPostName")
private String approvalPostName;
}

@ -33,6 +33,12 @@ public class DeviceChangeOrderEntity implements Serializable {
@TableId(value = "orderId")
private Long orderId;
/**
*
*/
@TableField(value = "billNo")
private String billNo;
/**
* add:change:
*/
@ -113,4 +119,10 @@ public class DeviceChangeOrderEntity implements Serializable {
*/
@TableField(value = "destroyType")
private Integer destroyType;
/**
*
*/
@TableField(value = "approvalFlowId")
private String approvalFlowId;
}

@ -14,6 +14,7 @@ public enum DeviceChangeStatusEnum {
DRAFT("draft", "草稿"),
WAIT_CONFIRM("wait_confirm", "待目标部门确认"),
REJECT_CONFIRM("reject_confirm", "目标部门拒绝"),
AUDITING("Auditing", "审核中"),
FINISH("finish", "已完成"),
// 只有type为change才可以取消
CANCEL("cancel", "已取消"),

@ -20,13 +20,13 @@ public class SysApprovalFlowAddDetailRequest {
*
*/
@TableField(value = "approvalUserId")
@NotEmpty(message = "审批人主键不可以为空!")
// @NotEmpty(message = "审批人主键不可以为空!")
private String approvalUserId;
/**
*
*/
@TableField(value = "approvalUserName")
@NotEmpty(message = "审批人名称不可以为空!")
// @NotEmpty(message = "审批人名称不可以为空!")
private String approvalUserName;
/**
@ -36,4 +36,25 @@ public class SysApprovalFlowAddDetailRequest {
@NotNull(message = "排序不可以为空!")
private Integer approvalSort;
/**
*
*/
@TableField(value = "approvalNodeType")
@NotNull(message = "审批节点类型不可以为空!")
private Integer approvalNodeType;
/**
*
*/
@TableField(value = "approvalPostId")
// @NotNull(message = "审批岗位序号不可以为空!")
private String approvalPostId;
/**
*
*/
@TableField(value = "approvalPostName")
// @NotNull(message = "审批岗位名称不可以为空!")
private String approvalPostName;
}

@ -5,12 +5,15 @@ import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.glxp.api.constant.Constant;
import com.glxp.api.entity.auth.AuthAdmin;
import com.glxp.api.entity.dev.DeviceChangeOrderEntity;
import com.glxp.api.entity.dev.DeviceChangeOrderItemEntity;
import com.glxp.api.enums.dev.DeviceChangeStatusEnum;
import com.glxp.api.enums.dev.DeviceChangeTypeEnum;
import com.glxp.api.exception.JsonException;
import com.glxp.api.util.GennerOrderUtils;
import com.glxp.api.util.OrderNoTypeBean;
import com.glxp.api.util.SnowflakeUtil;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
@ -40,6 +43,12 @@ public class DeviceChangeOrderParam {
@NotNull(message = "类型不能为空")
DeviceChangeTypeEnum type;
/**
*
*/
@TableField(value = "billNo")
private String billNo;
/**
*
*/
@ -548,7 +557,7 @@ public class DeviceChangeOrderParam {
public DeviceChangeOrderEntity getOrderEntity(AuthAdmin user) {
if (createUser != null) {
if (billNo != null) {
DeviceChangeOrderEntity deviceChangeOrderEntity = new DeviceChangeOrderEntity();
BeanUtil.copyProperties(this, deviceChangeOrderEntity);
return deviceChangeOrderEntity;
@ -561,6 +570,7 @@ public class DeviceChangeOrderParam {
.deptCode(deptCode)
.toDeptCode(toDeptCode)
.remark(remark)
.destroyType(destroyType)
.createUser(user.getId())
.createUserName(user.getEmployeeName())
.createTime(LocalDateTime.now())

@ -16,4 +16,8 @@ public interface SysApprovalFlowService extends IService<SysApprovalFlow> {
List<SysApprovalFlowDetailResponse> getDetailList(String approvalFlowId);
void submitApprovalFlow(SubmitApprovalFlowRequest submitApprovalFlowRequest);
SysApprovalFlow getApprovalFlowByMxId(String approvalFlowMxId);
boolean nodePermissions(String id);
}

@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.glxp.api.dao.basic.SysApprovalFlowMapper;
import com.glxp.api.dao.basic.SysApprovalFlowMxMapper;
import com.glxp.api.entity.auth.AuthAdmin;
import com.glxp.api.entity.basic.SysApprovalFlow;
import com.glxp.api.entity.basic.SysApprovalFlowConfigMx;
import com.glxp.api.entity.basic.SysApprovalFlowMx;
@ -64,7 +65,7 @@ public class SysApprovalFlowServiceImpl extends ServiceImpl<SysApprovalFlowMappe
sysApprovalFlow.setUpdateTime(date);
ArrayList<SysApprovalFlowMx> mxs = new ArrayList<>();
generateFlowMx(type,approvalFlowId,userId,date,mxs);
generateFlowMx(type,approvalFlowId,userId,date,mxs,sysApprovalFlow);
sysApprovalFlowMapper.insert(sysApprovalFlow);
sysApprovalFlowMxMapper.insertBatch(mxs);
@ -151,6 +152,43 @@ public class SysApprovalFlowServiceImpl extends ServiceImpl<SysApprovalFlowMappe
updateDocumentStatus(approvalFlowId,date,approvalUserId,userName);
}
@Override
public SysApprovalFlow getApprovalFlowByMxId(String approvalFlowMxId) {
SysApprovalFlowMx sysApprovalFlowMx = sysApprovalFlowMxMapper.selectById(approvalFlowMxId);
String approvalFlowId = sysApprovalFlowMx.getApprovalFlowId();
return sysApprovalFlowMapper.selectById(approvalFlowId);
}
@Override
public boolean nodePermissions(String id) {
Long userId = customerService.getUserId();
AuthAdmin authUserDto = customerService.getUserBean();
//查询创建人名称
String userName = authUserDto.getEmployeeName();
SysApprovalFlowMx sysApprovalFlowMx = sysApprovalFlowMxMapper.selectById(id);
if (ObjectUtil.isNull(sysApprovalFlowMx)){
throw new JsonException("审批id有误未找到记录");
}
Integer approvalNodeType = sysApprovalFlowMx.getApprovalNodeType();//节点类型 1人员 2岗位
String approvalUserId = sysApprovalFlowMx.getApprovalUserId();
String approvalPostId = sysApprovalFlowMx.getApprovalPostId();
if (approvalNodeType == 1){
if (!approvalUserId.equals(String.valueOf(userId))){
return false;
}
}else if (approvalNodeType == 2){
// SysUserPost userPost = sysPostService.getUserPost(userId);
// Long postId = userPost.getPostId();
// if (!approvalPostId.equals(String.valueOf(postId))){
// return false;
// }
}
return true;
}
private void updateDocumentStatus(String approvalFlowId,Date date,String approvalUserId,String userName) {
//子状态有一个驳回 为 驳回;全部审核通过 为通过 ;其他为 审核中
QueryWrapper<SysApprovalFlowMx> qw = new QueryWrapper<>();
@ -191,6 +229,7 @@ public class SysApprovalFlowServiceImpl extends ServiceImpl<SysApprovalFlowMappe
}
/**
*
* @param type
@ -199,15 +238,27 @@ public class SysApprovalFlowServiceImpl extends ServiceImpl<SysApprovalFlowMappe
* @param date
* @param mxs
*/
private void generateFlowMx(String type,String approvalFlowId, Long userId, Date date, ArrayList<SysApprovalFlowMx> mxs) {
private void generateFlowMx(String type,String approvalFlowId, Long userId, Date date, ArrayList<SysApprovalFlowMx> mxs,SysApprovalFlow sysApprovalFlow) {
List<SysApprovalFlowConfigMx> list = sysApprovalFlowConfigService.getDetailList(type);
if (CollectionUtil.isNotEmpty(list)){
SysApprovalFlowConfigMx sysApprovalFlowConfigMx = list.get(0);
if (sysApprovalFlowConfigMx.getApprovalNodeType() == 1 ){
sysApprovalFlow.setNextNodeName(sysApprovalFlowConfigMx.getApprovalUserName());
sysApprovalFlow.setNextApprovalNodeType(1);
}else if (sysApprovalFlowConfigMx.getApprovalNodeType() == 2 ){
sysApprovalFlow.setNextNodeName(sysApprovalFlowConfigMx.getApprovalPostName());
sysApprovalFlow.setNextApprovalNodeType(2);
}
list.forEach( item -> {
SysApprovalFlowMx sysApprovalFlowMx = new SysApprovalFlowMx();
sysApprovalFlowMx.setId(UUID.randomUUID().toString().replace("-", ""));
sysApprovalFlowMx.setApprovalFlowId(approvalFlowId);
sysApprovalFlowMx.setApprovalUserId(item.getApprovalUserId());
sysApprovalFlowMx.setApprovalUserName(item.getApprovalUserName());
sysApprovalFlowMx.setApprovalNodeType(item.getApprovalNodeType());
sysApprovalFlowMx.setApprovalPostId(item.getApprovalPostId());
sysApprovalFlowMx.setApprovalPostName(item.getApprovalPostName());
sysApprovalFlowMx.setApprovalStatus(ApprovalStatusEnum.DWSH.getCode());
sysApprovalFlowMx.setApprovalSort(item.getApprovalSort());
@ -218,6 +269,9 @@ public class SysApprovalFlowServiceImpl extends ServiceImpl<SysApprovalFlowMappe
mxs.add(sysApprovalFlowMx);
});
} else {
//直接通过
sysApprovalFlow.setStatus(ApprovalFlowEnum.TG.getCode());
}
}

@ -7,6 +7,7 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.github.pagehelper.PageHelper;
import com.glxp.api.common.util.ResultVOUtils;
import com.glxp.api.constant.Constant;
import com.glxp.api.entity.auth.AuthAdmin;
import com.glxp.api.entity.auth.DeptEntity;
import com.glxp.api.entity.basic.BasicProductsEntity;
@ -27,12 +28,16 @@ import com.glxp.api.req.system.DeleteRequest;
import com.glxp.api.res.basic.UdiRelevanceResponse;
import com.glxp.api.service.auth.DeptService;
import com.glxp.api.service.basic.ProductInfoService;
import com.glxp.api.service.basic.SysApprovalFlowService;
import com.glxp.api.service.basic.UdiRelevanceService;
import com.glxp.api.service.dev.DeviceChangeLogService;
import com.glxp.api.service.dev.DeviceChangeOrderItemService;
import com.glxp.api.service.dev.DeviceChangeOrderService;
import com.glxp.api.dao.dev.DeviceChangeOrderMapper;
import com.glxp.api.service.dev.DeviceInfoService;
import com.glxp.api.service.system.SystemParamConfigService;
import com.glxp.api.util.GennerOrderUtils;
import com.glxp.api.util.OrderNoTypeBean;
import com.glxp.api.util.SnowflakeUtil;
import com.glxp.api.util.StringUtils;
import com.glxp.api.vo.dev.DeviceChangeOrderVo;
@ -40,6 +45,7 @@ import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.sql.SQLException;
import java.time.LocalDateTime;
import java.util.ArrayList;
@ -59,6 +65,17 @@ public class DeviceChangeOrderServiceImpl extends ServiceImpl<DeviceChangeOrderM
final UdiRelevanceService udiRelevanceService;
final DeptService deptService;
final String typeSbdj = "sbdj";//设备登记
final String typeSbbg = "sbbg";//设备变更
final String typeSbyc = "sbyc";//设备移除
@Resource
SystemParamConfigService systemParamConfigService;
@Resource
SysApprovalFlowService sysApprovalFlowService;
@Resource
GennerOrderUtils gennerOrderUtils;
@Override
public List<DeviceChangeOrderVo> listByVo(DeviceChangeOrderQuery query, AuthAdmin user) {
@ -71,6 +88,15 @@ public class DeviceChangeOrderServiceImpl extends ServiceImpl<DeviceChangeOrderM
param.valid(user);
DeviceChangeOrderEntity order = param.getOrderEntity(user);
order.setStatus(DeviceChangeStatusEnum.DRAFT);
if (StringUtils.isEmpty(order.getBillNo())) {
if (order.getType() == DeviceChangeTypeEnum.ADD) {
order.setBillNo(gennerOrderUtils.createStOrderNo(new OrderNoTypeBean(Constant.DEV_DDJ, "yyyyMMdd")));
} else if (order.getType() == DeviceChangeTypeEnum.DESTROY) {
order.setBillNo(gennerOrderUtils.createStOrderNo(new OrderNoTypeBean(Constant.DEV_DYC, "yyyyMMdd")));
} else if (order.getType() == DeviceChangeTypeEnum.CHANGE) {
order.setBillNo(gennerOrderUtils.createStOrderNo(new OrderNoTypeBean(Constant.DEV_DBG, "yyyyMMdd")));
}
}
super.saveOrUpdate(order);
deviceChangeOrderItemService.deleteByOrderId(order.getOrderId());
List<DeviceChangeOrderItemEntity> orderItems = param.getDraftOrderItemList(order.getOrderId(), user);
@ -83,6 +109,16 @@ public class DeviceChangeOrderServiceImpl extends ServiceImpl<DeviceChangeOrderM
public void saveOrder(AuthAdmin user, DeviceChangeOrderParam param) {
param.valid(user);
DeviceChangeOrderEntity order = param.getOrderEntity(user);
if (StringUtils.isEmpty(order.getBillNo())) {
if (order.getType() == DeviceChangeTypeEnum.ADD) {
order.setBillNo(gennerOrderUtils.createStOrderNo(new OrderNoTypeBean(Constant.DEV_DDJ, "yyyyMMdd")));
} else if (order.getType() == DeviceChangeTypeEnum.DESTROY) {
order.setBillNo(gennerOrderUtils.createStOrderNo(new OrderNoTypeBean(Constant.DEV_DYC, "yyyyMMdd")));
} else if (order.getType() == DeviceChangeTypeEnum.CHANGE) {
order.setBillNo(gennerOrderUtils.createStOrderNo(new OrderNoTypeBean(Constant.DEV_DBG, "yyyyMMdd")));
}
}
DeviceChangeOrderVo orderVo = BeanUtil.copyProperties(order, DeviceChangeOrderVo.class);
DeptEntity dept = deptService.selectByCode(orderVo.getDeptCode());
orderVo.setDeptName(dept.getName());
@ -97,6 +133,7 @@ public class DeviceChangeOrderServiceImpl extends ServiceImpl<DeviceChangeOrderM
}
List<DeviceChangeOrderItemEntity> orderItems = param.getOrderItemList(order.getOrderId(), user);
List<DeviceChangeLogEntity> logs = new ArrayList<>();
Boolean sys_approval_flow = "1".equals(systemParamConfigService.selectValueByParamKey("sys_approval_flow"));
orderItems.forEach(i -> {
if (order.getType() == DeviceChangeTypeEnum.ADD) {
// UdiRelevanceResponse productInfo = udiRelevanceService.selectByRelId(i.getProductId().toString());
@ -131,7 +168,7 @@ public class DeviceChangeOrderServiceImpl extends ServiceImpl<DeviceChangeOrderM
// }
DeviceChangeLogEntity logEntity = DeviceChangeLogEntity.genEntity(i.getDeviceCode(), orderVo);
logs.add(logEntity);
} else {
} else if (order.getType() == DeviceChangeTypeEnum.CHANGE){
DeviceInfoEntity deviceInfo = deviceInfoService.getById(i.getDeviceCode());
if (deviceInfo == null) {
throw new JsonException(String.format("未找到设备编码为[%s]的设备", i.getDeviceCode()));
@ -144,23 +181,51 @@ public class DeviceChangeOrderServiceImpl extends ServiceImpl<DeviceChangeOrderM
}
deviceInfoService.changeStatus(i.getDeviceCode(), order.getDeptCode(), deviceInfo.getStatus()
, order.getType() == DeviceChangeTypeEnum.CHANGE ? DeviceStatusEnum.CHANGE : DeviceStatusEnum.DESTROY);
BeanUtil.copyProperties(deviceInfo,i);
i.setProductId(deviceInfo.getProductId());
if (order.getType() == DeviceChangeTypeEnum.DESTROY) {
DeviceChangeLogEntity logEntity = DeviceChangeLogEntity.genEntity(i.getDeviceCode(), orderVo);
logs.add(logEntity);
}
}else if (order.getType() == DeviceChangeTypeEnum.DESTROY) {
DeviceInfoEntity deviceInfo = deviceInfoService.getById(i.getDeviceCode());
if (deviceInfo == null) {
throw new JsonException(String.format("未找到设备编码为[%s]的设备", i.getDeviceCode()));
}
if (!deviceInfo.getDeptCode().equals(order.getDeptCode())) {
throw new JsonException(String.format("设备编码为[%s]的设备,已不属于单据所在部门,无法变更", i.getDeviceCode()));
}
if (deviceInfo.getStatus() != DeviceStatusEnum.NORMAL) {
throw new JsonException(String.format("设备编码为[%s]的设备,状态不是[%s],无法变更,当前状态为[%s]", i.getDeviceCode(), DeviceStatusEnum.NORMAL.getDesc(), deviceInfo.getStatus().getDesc()));
}
BeanUtil.copyProperties(deviceInfo,i);
i.setProductId(deviceInfo.getProductId());
if (!sys_approval_flow){
deviceInfoService.changeStatus(i.getDeviceCode(), order.getDeptCode(), deviceInfo.getStatus()
, order.getType() == DeviceChangeTypeEnum.CHANGE ? DeviceStatusEnum.CHANGE : DeviceStatusEnum.DESTROY);
if (order.getType() == DeviceChangeTypeEnum.DESTROY) {
DeviceChangeLogEntity logEntity = DeviceChangeLogEntity.genEntity(i.getDeviceCode(), orderVo);
logs.add(logEntity);
}
}
}
});
if (CollectionUtil.isNotEmpty(logs)) {
deviceChangeLogService.saveBatch(logs);
}
order.setStatus(DeviceChangeStatusEnum.WAIT_CONFIRM);
if (order.getType() == DeviceChangeTypeEnum.ADD || order.getType() == DeviceChangeTypeEnum.DESTROY) {
order.setStatus(DeviceChangeStatusEnum.FINISH)
.setConfirmTime(order.getCreateTime())
.setConfirmUser(order.getCreateUser())
.setConfirmUserName(order.getCreateUserName())
;
if (order.getType() == DeviceChangeTypeEnum.ADD || order.getType() == DeviceChangeTypeEnum.DESTROY) {//设备登记、设备移除
if (order.getType() == DeviceChangeTypeEnum.DESTROY && sys_approval_flow) {//设备移除 && 提交审核
String approvalFlowId = sysApprovalFlowService.getApprovalFlowId();
order.setApprovalFlowId(approvalFlowId);
sysApprovalFlowService.generateFlow(approvalFlowId, order.getBillNo(), typeSbyc);
order.setStatus(DeviceChangeStatusEnum.AUDITING);
}else {
order.setStatus(DeviceChangeStatusEnum.FINISH)
.setConfirmTime(order.getCreateTime())
.setConfirmUser(order.getCreateUser())
.setConfirmUserName(order.getCreateUserName());
}
}
super.saveOrUpdate(order);
deviceChangeOrderItemService.deleteByOrderId(order.getOrderId());

@ -4,6 +4,8 @@ import com.glxp.api.entity.dev.DeviceChangeOrderEntity;
import com.glxp.api.enums.dev.DeviceChangeTypeEnum;
import lombok.Data;
import java.util.Date;
@Data
public class DeviceChangeOrderVo extends DeviceChangeOrderEntity {
@ -16,6 +18,18 @@ public class DeviceChangeOrderVo extends DeviceChangeOrderEntity {
String statusName;
/**
* 1.稿2.3.4.
*/
private int flowStatus;
/**
*
*/
private Date flowAuditTime;
private String flowAuditByName;
public String getTypeName() {
if (super.getType() != null) {
DeviceChangeTypeEnum type = super.getType();

@ -1,323 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.glxp.api.dao.basic.SysApprovalFlowConfigMxMapper">
<resultMap id="BaseResultMap" type="com.glxp.api.entity.basic.SysApprovalFlowConfigMx">
<!--@mbg.generated-->
<!--@Table sys_approval_flow_config_mx-->
<id column="id" jdbcType="VARCHAR" property="id" />
<result column="type" jdbcType="VARCHAR" property="type" />
<result column="approvalUserId" jdbcType="VARCHAR" property="approvalUserId" />
<result column="approvalUserName" jdbcType="VARCHAR" property="approvalUserName" />
<result column="approvalSort" jdbcType="INTEGER" property="approvalSort" />
<result column="createUser" jdbcType="VARCHAR" property="createUser" />
<result column="createTime" jdbcType="TIMESTAMP" property="createTime" />
<result column="updateUser" jdbcType="VARCHAR" property="updateUser" />
<result column="updateTime" jdbcType="TIMESTAMP" property="updateTime" />
</resultMap>
<sql id="Base_Column_List">
<!--@mbg.generated-->
id, `type`, approvalUserId,approvalUserName, approvalSort, `createUser`, createTime, updateUser, updateTime
</sql>
<select id="selectByPrimaryKey" parameterType="java.lang.String" resultMap="BaseResultMap">
<!--@mbg.generated-->
select
<include refid="Base_Column_List" />
from sys_approval_flow_config_mx
where id = #{id,jdbcType=VARCHAR}
</select>
<delete id="deleteByPrimaryKey" parameterType="java.lang.String">
<!--@mbg.generated-->
delete from sys_approval_flow_config_mx
where id = #{id,jdbcType=VARCHAR}
</delete>
<insert id="insert" parameterType="com.glxp.api.entity.basic.SysApprovalFlowConfigMx">
<!--@mbg.generated-->
insert into sys_approval_flow_config_mx (id, `type`, approvalUserId,approvalUserName,
approvalSort, `createUser`, createTime,
updateUser, updateTime)
values (#{id,jdbcType=VARCHAR}, #{type,jdbcType=VARCHAR}, #{approvalUserId,jdbcType=VARCHAR}, #{approvalUserName,jdbcType=VARCHAR},
#{approvalSort,jdbcType=INTEGER}, #{createUser,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP},
#{updateUser,jdbcType=VARCHAR}, #{updateTime,jdbcType=TIMESTAMP})
</insert>
<insert id="insertSelective" parameterType="com.glxp.api.entity.basic.SysApprovalFlowConfigMx">
<!--@mbg.generated-->
insert into sys_approval_flow_config_mx
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="type != null">
`type`,
</if>
<if test="approvalUserId != null">
approvalUserId,
</if>
<if test="approvalUserName != null">
approvalUserName,
</if>
<if test="approvalSort != null">
approvalSort,
</if>
<if test="createUser != null">
`createUser`,
</if>
<if test="createTime != null">
createTime,
</if>
<if test="updateUser != null">
updateUser,
</if>
<if test="updateTime != null">
updateTime,
</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=VARCHAR},
</if>
<if test="type != null">
#{type,jdbcType=VARCHAR},
</if>
<if test="approvalUserId != null">
#{approvalUserId,jdbcType=VARCHAR},
</if>
<if test="approvalUserName != null">
#{approvalUserName,jdbcType=VARCHAR},
</if>
<if test="approvalSort != null">
#{approvalSort,jdbcType=INTEGER},
</if>
<if test="createUser != null">
#{createUser,jdbcType=VARCHAR},
</if>
<if test="createTime != null">
#{createTime,jdbcType=TIMESTAMP},
</if>
<if test="updateUser != null">
#{updateUser,jdbcType=VARCHAR},
</if>
<if test="updateTime != null">
#{updateTime,jdbcType=TIMESTAMP},
</if>
</trim>
</insert>
<update id="updateByPrimaryKeySelective" parameterType="com.glxp.api.entity.basic.SysApprovalFlowConfigMx">
<!--@mbg.generated-->
update sys_approval_flow_config_mx
<set>
<if test="type != null">
`type` = #{type,jdbcType=VARCHAR},
</if>
<if test="approvalUserId != null">
approvalUserId = #{approvalUserId,jdbcType=VARCHAR},
</if>
<if test="approvalUserName != null">
approvalUserName = #{approvalUserName,jdbcType=VARCHAR},
</if>
<if test="approvalSort != null">
approvalSort = #{approvalSort,jdbcType=INTEGER},
</if>
<if test="createUser != null">
`createUser` = #{createUser,jdbcType=VARCHAR},
</if>
<if test="createTime != null">
createTime = #{createTime,jdbcType=TIMESTAMP},
</if>
<if test="updateUser != null">
updateUser = #{updateUser,jdbcType=VARCHAR},
</if>
<if test="updateTime != null">
updateTime = #{updateTime,jdbcType=TIMESTAMP},
</if>
</set>
where id = #{id,jdbcType=VARCHAR}
</update>
<update id="updateByPrimaryKey" parameterType="com.glxp.api.entity.basic.SysApprovalFlowConfigMx">
<!--@mbg.generated-->
update sys_approval_flow_config_mx
set `type` = #{type,jdbcType=VARCHAR},
approvalUserId = #{approvalUserId,jdbcType=VARCHAR},
approvalUserName = #{approvalUserName,jdbcType=VARCHAR},
approvalSort = #{approvalSort,jdbcType=INTEGER},
`createUser` = #{createUser,jdbcType=VARCHAR},
createTime = #{createTime,jdbcType=TIMESTAMP},
updateUser = #{updateUser,jdbcType=VARCHAR},
updateTime = #{updateTime,jdbcType=TIMESTAMP}
where id = #{id,jdbcType=VARCHAR}
</update>
<update id="updateBatch" parameterType="java.util.List">
<!--@mbg.generated-->
update sys_approval_flow_config_mx
<trim prefix="set" suffixOverrides=",">
<trim prefix="`type` = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id,jdbcType=VARCHAR} then #{item.type,jdbcType=VARCHAR}
</foreach>
</trim>
<trim prefix="approvalUserId = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id,jdbcType=VARCHAR} then #{item.approvalUserId,jdbcType=VARCHAR}
</foreach>
</trim>
<trim prefix="approvalUserName = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id,jdbcType=VARCHAR} then #{item.approvalUserName,jdbcType=VARCHAR}
</foreach>
</trim>
<trim prefix="approvalSort = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id,jdbcType=VARCHAR} then #{item.approvalSort,jdbcType=INTEGER}
</foreach>
</trim>
<trim prefix="`createUser` = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id,jdbcType=VARCHAR} then #{item.createUser,jdbcType=VARCHAR}
</foreach>
</trim>
<trim prefix="createTime = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id,jdbcType=VARCHAR} then #{item.createTime,jdbcType=TIMESTAMP}
</foreach>
</trim>
<trim prefix="updateUser = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id,jdbcType=VARCHAR} then #{item.updateUser,jdbcType=VARCHAR}
</foreach>
</trim>
<trim prefix="updateTime = case" suffix="end,">
<foreach collection="list" index="index" item="item">
when id = #{item.id,jdbcType=VARCHAR} then #{item.updateTime,jdbcType=TIMESTAMP}
</foreach>
</trim>
</trim>
where id in
<foreach close=")" collection="list" item="item" open="(" separator=", ">
#{item.id,jdbcType=VARCHAR}
</foreach>
</update>
<insert id="batchInsert" parameterType="map">
<!--@mbg.generated-->
insert into sys_approval_flow_config_mx
(id, `type`, approvalUserId, approvalUserName, approvalSort, `createUser`, createTime, updateUser,
updateTime)
values
<foreach collection="list" item="item" separator=",">
(#{item.id,jdbcType=VARCHAR}, #{item.type,jdbcType=VARCHAR}, #{item.approvalUserId,jdbcType=VARCHAR},
#{item.approvalSort,jdbcType=INTEGER}, #{item.createUser,jdbcType=VARCHAR}, #{item.createTime,jdbcType=TIMESTAMP},
#{item.updateUser,jdbcType=VARCHAR}, #{item.updateTime,jdbcType=TIMESTAMP})
</foreach>
</insert>
<insert id="insertOrUpdate" parameterType="com.glxp.api.entity.basic.SysApprovalFlowConfigMx">
<!--@mbg.generated-->
insert into sys_approval_flow_config_mx
(id, `type`, approvalUserId,approvalUserName, approvalSort, `createUser`, createTime, updateUser,
updateTime)
values
(#{id,jdbcType=VARCHAR}, #{type,jdbcType=VARCHAR}, #{approvalUserId,jdbcType=VARCHAR},#{approvalUserName,jdbcType=VARCHAR},
#{approvalSort,jdbcType=INTEGER}, #{createUser,jdbcType=VARCHAR}, #{createTime,jdbcType=TIMESTAMP},
#{updateUser,jdbcType=VARCHAR}, #{updateTime,jdbcType=TIMESTAMP})
on duplicate key update
id = #{id,jdbcType=VARCHAR},
`type` = #{type,jdbcType=VARCHAR},
approvalUserId = #{approvalUserId,jdbcType=VARCHAR},
approvalUserName = #{approvalUserName,jdbcType=VARCHAR},
approvalSort = #{approvalSort,jdbcType=INTEGER},
`createUser` = #{createUser,jdbcType=VARCHAR},
createTime = #{createTime,jdbcType=TIMESTAMP},
updateUser = #{updateUser,jdbcType=VARCHAR},
updateTime = #{updateTime,jdbcType=TIMESTAMP}
</insert>
<insert id="insertOrUpdateSelective" parameterType="com.glxp.api.entity.basic.SysApprovalFlowConfigMx">
<!--@mbg.generated-->
insert into sys_approval_flow_config_mx
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
id,
</if>
<if test="type != null">
`type`,
</if>
<if test="approvalUserId != null">
approvalUserId,
</if>
<if test="approvalUserName != null">
approvalUserName,
</if>
<if test="approvalSort != null">
approvalSort,
</if>
<if test="createUser != null">
`createUser`,
</if>
<if test="createTime != null">
createTime,
</if>
<if test="updateUser != null">
updateUser,
</if>
<if test="updateTime != null">
updateTime,
</if>
</trim>
values
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="id != null">
#{id,jdbcType=VARCHAR},
</if>
<if test="type != null">
#{type,jdbcType=VARCHAR},
</if>
<if test="approvalUserId != null">
#{approvalUserId,jdbcType=VARCHAR},
</if>
<if test="approvalUserName != null">
#{approvalUserName,jdbcType=VARCHAR},
</if>
<if test="approvalSort != null">
#{approvalSort,jdbcType=INTEGER},
</if>
<if test="createUser != null">
#{createUser,jdbcType=VARCHAR},
</if>
<if test="createTime != null">
#{createTime,jdbcType=TIMESTAMP},
</if>
<if test="updateUser != null">
#{updateUser,jdbcType=VARCHAR},
</if>
<if test="updateTime != null">
#{updateTime,jdbcType=TIMESTAMP},
</if>
</trim>
on duplicate key update
<trim suffixOverrides=",">
<if test="id != null">
id = #{id,jdbcType=VARCHAR},
</if>
<if test="type != null">
`type` = #{type,jdbcType=VARCHAR},
</if>
<if test="approvalUserId != null">
approvalUserId = #{approvalUserId,jdbcType=VARCHAR},
</if>
<if test="approvalUserName != null">
approvalUserName = #{approvalUserName,jdbcType=VARCHAR},
</if>
<if test="approvalSort != null">
approvalSort = #{approvalSort,jdbcType=INTEGER},
</if>
<if test="createUser != null">
`createUser` = #{createUser,jdbcType=VARCHAR},
</if>
<if test="createTime != null">
createTime = #{createTime,jdbcType=TIMESTAMP},
</if>
<if test="updateUser != null">
updateUser = #{updateUser,jdbcType=VARCHAR},
</if>
<if test="updateTime != null">
updateTime = #{updateTime,jdbcType=TIMESTAMP},
</if>
</trim>
</insert>
</mapper>

@ -29,10 +29,12 @@
createUser,createTime
</sql>
<select id="listByVo" resultType="com.glxp.api.vo.dev.DeviceChangeOrderVo">
select o.*,
select IFNULL(saf.status,1) as flowStatus,saf.updateTime as flowAuditTime,saf.updateUserName as flowAuditByName,
o.*,
(select name from auth_dept where code = o.deptCode) deptName,
(select name from auth_dept where code = o.toDeptCode) toDeptName
from device_change_order o
Left Join sys_approval_flow as saf ON o.approvalFlowId = saf.id
<where>
and o.status != 'temp'
and (o.deptCode = #{user.locDeptCode} or o.toDeptCode = #{user.locDeptCode})

@ -2504,3 +2504,47 @@ CALL Pro_Temp_ColumnWork('device_check_detail', 'applyId',
CALL Pro_Temp_ColumnWork('device_change_order', 'destroyType',
'bigint DEFAULT NULL COMMENT''移除类型 1报废2销毁''',
1);
CALL Pro_Temp_ColumnWork('device_change_order', 'approvalFlowId',
' varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_cs NULL DEFAULT NULL COMMENT ''审批表主键(关联审批流程主表)'' ',
1);
CALL Pro_Temp_ColumnWork('device_change_order', 'billNo',
' varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_cs NULL DEFAULT NULL COMMENT ''单据号'' ',
1);
# INSERT IGNORE INTO sys_approval_flow_config(`id`, `type`, `typeName`, `approvalSort`, `createUser`, `createTime`, `updateUser`, `updateTime`)
# VALUES ('5', 'sbdj', '设备登记', 5, NULL, NULL, NULL, NULL);
#
# INSERT IGNORE INTO sys_approval_flow_config(`id`, `type`, `typeName`, `approvalSort`, `createUser`, `createTime`, `updateUser`, `updateTime`)
# VALUES ('6', 'sbbg', '设备变更', 6, NULL, NULL, NULL, NULL);
INSERT IGNORE INTO sys_approval_flow_config(`id`, `type`, `typeName`, `approvalSort`, `createUser`, `createTime`, `updateUser`, `updateTime`)
VALUES ('7', 'sbyc', '设备移除', 7, NULL, NULL, NULL, NULL);
CALL Pro_Temp_ColumnWork('sys_approval_flow_config_mx', 'approvalNodeType',
' bigint(0) NOT NULL COMMENT ''审批节点类型 1 人员 2 岗位'' ',
1);
CALL Pro_Temp_ColumnWork('sys_approval_flow_config_mx', 'approvalPostId',
' varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_cs NULL DEFAULT NULL COMMENT ''审批岗位信息'' ',
1);
CALL Pro_Temp_ColumnWork('sys_approval_flow_config_mx', 'approvalPostName',
' varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_cs NULL DEFAULT NULL COMMENT ''审批岗位名称'' ',
1);
CALL Pro_Temp_ColumnWork('sys_approval_flow_mx', 'approvalNodeType',
' bigint(0) NOT NULL COMMENT ''审批节点类型 1 人员 2 岗位'' ',
1);
CALL Pro_Temp_ColumnWork('sys_approval_flow_mx', 'approvalPostId',
' varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_cs NULL DEFAULT NULL COMMENT ''审批岗位信息'' ',
1);
CALL Pro_Temp_ColumnWork('sys_approval_flow_mx', 'approvalPostName',
' varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_cs NULL DEFAULT NULL COMMENT ''审批岗位名称'' ',
1);
CALL Pro_Temp_ColumnWork('sys_approval_flow', 'nextNodeName',
' varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_cs NULL DEFAULT NULL COMMENT ''下一个节点审核名字'' ',
1);
CALL Pro_Temp_ColumnWork('sys_approval_flow', 'nextApprovalNodeType',
' varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_as_cs NULL DEFAULT NULL COMMENT ''下一个节点审核类型'' ',
1);

Loading…
Cancel
Save