“linengliang”
2023-11-22 ce5f5d0a9d3ca3304f5e473e2f70ddfbea163f99
签审流
已添加1个文件
已修改3个文件
198 ■■■■■ 文件已修改
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/StreamController.java 175 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/Stream.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/StreamOperation.java 5 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/vo/ButtonVo.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/StreamController.java
@@ -1,5 +1,10 @@
package org.jeecg.modules.eam.controller;
import com.baomidou.mybatisplus.core.toolkit.ObjectUtils;
import com.jeecg.dingtalk.api.user.vo.User;
import com.jeecg.dingtalk.api.user.vo.UserRole;
import org.jeecg.common.api.dto.message.MessageDTO;
import org.jeecg.common.system.api.ISysBaseAPI;
import org.jeecg.common.system.query.QueryGenerator;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -7,13 +12,23 @@
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.system.base.controller.JeecgController;
import org.jeecg.common.api.vo.Result;
import org.jeecg.modules.eam.entity.Equipment;
import org.jeecg.modules.eam.service.IEamEquipmentService;
import org.jeecg.modules.eam.vo.ButtonVo;
import org.jeecg.modules.system.entity.*;
import org.jeecg.modules.system.service.*;
import org.jetbrains.annotations.NotNull;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import java.util.Arrays;
import java.util.*;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.eam.entity.StreamOperation;
import org.jeecg.modules.eam.entity.ABCAssessment;
@@ -34,8 +49,6 @@
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
 /**
@@ -58,6 +71,28 @@
    @Autowired
    private IABCAssessmentService aBCAssessmentService;
    @Autowired
    private ISysUserRoleService userRoleService;
    @Autowired
    private ISysRoleService roleService;
    @Autowired
    private ISysDictService sysDictService;
    @Autowired
    private ISysDictItemService sysDictItemService;
     @Autowired
     private ISysBaseAPI sysBaseAPI;
     @Autowired
     private ISysUserService userService;
     @Autowired
     private IEamEquipmentService equipmentService;
    /*---------------------------------主表处理-begin-------------------------------------*/
@@ -479,5 +514,139 @@
         List<ABCAssessment> aBCAssessmentList = aBCAssessmentService.selectByMainId(id);
         return Result.OK(aBCAssessmentList);
     }
     @GetMapping("getPreInfo")
     public Result<Map<String,Object>> getPreInfo(){
         Map<String,Object> map = new HashMap<>(3);
         LoginUser user= (LoginUser) SecurityUtils.getSubject().getPrincipal();
         SysDict roleNode = sysDictService.getOne(new QueryWrapper<SysDict>().eq("dict_code","abc_stream_node_role"),false);
         SysDict nodeOperation = sysDictService.getOne(new QueryWrapper<SysDict>().eq("dict_code","stream_node_operation"),false);
         SysDict operation = sysDictService.getOne(new QueryWrapper<SysDict>().eq("dict_code","stream_operation"),false);
         if(ObjectUtils.isNotNull(roleNode)){
             List<SysDictItem> roleNodeItems = sysDictItemService.selectItemsByMainId(roleNode.getId());
             List<String> roleCodes = roleNodeItems.stream().map(SysDictItem::getItemText).collect(Collectors.toList());
             if(ObjectUtils.isNotNull(nodeOperation)){
                 List<SysDictItem> nodeOperationItems = sysDictItemService.selectItemsByMainId(nodeOperation.getId());
                 List<SysUserRole> userRoles = userRoleService.list(new QueryWrapper<SysUserRole>().eq("user_id",user.getId()));
                 List<String> roleIds = userRoles.stream().map(SysUserRole::getRoleId).collect(Collectors.toList());
                 List<SysRole> roles = roleService.list(new QueryWrapper<SysRole>().in("id",roleIds).in("role_code",roleCodes));
                 if(roles.size()==1){
                     for(SysDictItem roleNodeItem:roleNodeItems){
                         if(roles.get(0).getRoleCode().equals(roleNodeItem.getItemText())){
                             for(SysDictItem nodeOperationItem:nodeOperationItems){
                                 if(roleNodeItem.getItemValue().equals(nodeOperationItem.getItemValue())){
                                     if(ObjectUtils.isNotNull(operation)){
                                         List<String> buttonvalues = Arrays.asList(nodeOperationItem.getItemText().split(","));
                                        List<SysDictItem> operations = sysDictItemService.selectItemsByMainId(operation.getId());
                                        List<ButtonVo> buttons = new ArrayList<>();
                                        for(String value:buttonvalues){
                                            for(SysDictItem name:operations){
                                                if(name.getItemValue().equals(value)){
                                                    ButtonVo button = new ButtonVo();
                                                    button.setName(name.getItemText());
                                                    button.setValue(value);
                                                    buttons.add(button);
                                                }
                                            }
                                        }
                                        map.put("buttons",buttons);
                                        map.put("nodeValue",nodeOperationItem.getItemValue());
                                        map.put("nodeSort",roleNodeItem.getSortOrder());
                                        map.put("msg","ok");
                                        return Result.OK(map);
                                    }
                                }
                            }
                        }
                    }
                 }
             }
         }
         map.put("msg","该用户无签审角色");
         return Result.OK(map);
     }
     @PostMapping("next")
     @Transactional(rollbackFor = {Exception.class})
     public Result<?> handleNext(@RequestBody ButtonVo buttonVo){
         LoginUser user= (LoginUser) SecurityUtils.getSubject().getPrincipal();
         List<StreamOperation> streamOperations = streamOperationService.list(new QueryWrapper<StreamOperation>().eq("stream_id",buttonVo.getStreamId()).orderByDesc("sort"));
         SysDict streamNode = sysDictService.getOne(new QueryWrapper<SysDict>().eq("dict_code","stream_node"),false);
         if(ObjectUtils.isNotNull(streamNode)){
             List<SysDictItem> nodes = sysDictItemService.selectItemsByMainId(streamNode.getId());
             if(buttonVo.getNodeSort()+1==nodes.size()){
                 List<ABCAssessment> abcAssessments = aBCAssessmentService.selectByMainId(buttonVo.getStreamId());
                 for(ABCAssessment abcAssessment:abcAssessments){
                    Equipment equipment = equipmentService.getById(abcAssessment.getEquipmentId());
                    equipment.setEquipmentImportanceId(abcAssessment.getFinalStandard());
                    equipmentService.updateById(equipment);
                }
            }
            SysDictItem nextStreamNodeItem = sysDictItemService.getOne(new QueryWrapper<SysDictItem>().eq("dict_id",streamNode.getId()).eq("sort_order",buttonVo.getNodeSort()+1),false);
            return getResult(buttonVo, user, streamOperations, nextStreamNodeItem);
        }
         return Result.error("签审流系统出现错误,请联系管理员");
     }
     @NotNull
     private Result<?> getResult(@RequestBody ButtonVo buttonVo, LoginUser user, List<StreamOperation> streamOperations, SysDictItem nextStreamNodeItem) {
         SysDict roleNode = sysDictService.getOne(new QueryWrapper<SysDict>().eq("dict_code","abc_stream_node_role"),false);
         SysDictItem roleNodeItem = sysDictItemService.getOne(new QueryWrapper<SysDictItem>().eq("dict_id",roleNode.getId()).eq("item_value",nextStreamNodeItem.getItemValue()));
         SysRole nextRole = roleService.getOne(new QueryWrapper<SysRole>().eq("role_code",roleNodeItem.getItemText()));
         return getResult(buttonVo, user, streamOperations, nextStreamNodeItem,nextRole);
     }
     @NotNull
     private Result<?> getResult(@RequestBody ButtonVo buttonVo, LoginUser user, List<StreamOperation> streamOperations, SysDictItem nextStreamNodeItem,SysRole role) {
         if(ObjectUtils.isNotNull(nextStreamNodeItem)){
             Stream stream = streamService.getById(buttonVo.getStreamId());
             stream.setStatus(nextStreamNodeItem.getItemValue());
             streamService.updateById(stream);
             StreamOperation streamOperation = new StreamOperation();
             streamOperation.setOperation(buttonVo.getValue());
             streamOperation.setStreamId(stream.getId());
             streamOperation.setOperationNode(buttonVo.getNode());
             streamOperation.setUserId(user.getId());
             streamOperation.setCreateTime(new Date());
             streamOperation.setRemark(buttonVo.getRemark());
             if(streamOperations.size()==0){
                 streamOperation.setSort(0);
             }
             else {
                 streamOperation.setSort(streamOperations.get(0).getSort()+1);
                 streamOperation.setSourceId(streamOperations.get(0).getId());
             }
             streamOperationService.save(streamOperation);
             List<String> userIds = userRoleService.list(new QueryWrapper<SysUserRole>().eq("role_id",role.getId())).stream().map(SysUserRole::getUserId).collect(Collectors.toList());
             for(String uId:userIds){
                 SysUser toU = userService.getById(uId);
                  String msg = "单据号为"+stream.getNum()+"的ABC标识变更单需要确认";
                 MessageDTO messageDTO = new MessageDTO();
                 messageDTO.setTitle("ABC标识变更");
                 messageDTO.setContent(msg);
                 messageDTO.setCategory("ABC变更");
                 messageDTO.setFromUser(user.getUsername());
                 messageDTO.setToUser(toU.getUsername());
                 sysBaseAPI.sendSysAnnouncement(messageDTO);
             }
             return Result.OK("操作成功");
         }else {
             return Result.error("签审流系统出现错误,请联系管理员");
         }
     }
     @PostMapping("last")
     @Transactional(rollbackFor = {Exception.class})
     public Result<?> handleLast(@RequestBody ButtonVo buttonVo){
         LoginUser user= (LoginUser) SecurityUtils.getSubject().getPrincipal();
         List<StreamOperation> streamOperations = streamOperationService.list(new QueryWrapper<StreamOperation>().eq("stream_id",buttonVo.getStreamId()).orderByDesc("sort"));
         SysDict streamNode = sysDictService.getOne(new QueryWrapper<SysDict>().eq("dict_code","stream_node"),false);
         if(ObjectUtils.isNotNull(streamNode)){
             SysDictItem nextStreamNodeItem = sysDictItemService.getOne(new QueryWrapper<SysDictItem>().eq("dict_id",streamNode.getId()).eq("sort_order",buttonVo.getNodeSort()-1),false);
             return getResult(buttonVo, user, streamOperations, nextStreamNodeItem);
         }
         return Result.error("签审流系统出现错误,请联系管理员");
     }
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/Stream.java
@@ -40,7 +40,7 @@
    @Dict(dicCode = "stream_node")
    private java.lang.String status;
    /**createTime*/
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "createTime")
    private java.util.Date createTime;
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/StreamOperation.java
@@ -38,6 +38,7 @@
    /**操作*/
    @Excel(name = "操作", width = 15)
    @ApiModelProperty(value = "操作")
    @Dict(dicCode = "stream_operation")
    private java.lang.String operation;
    /**上一步操作ID*/
    @Excel(name = "上一步操作ID", width = 15)
@@ -46,17 +47,19 @@
    /**操作人*/
    @Excel(name = "操作人", width = 15)
    @ApiModelProperty(value = "操作人")
    @Dict(dicCode = "id",dicText = "realname",dictTable = "sys_user")
    private java.lang.String userId;
    /**流ID*/
    @ApiModelProperty(value = "流ID")
    private java.lang.String streamId;
    /**操作时间*/
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd")
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern="yyyy-MM-dd")
    @ApiModelProperty(value = "操作时间")
    private java.util.Date createTime;
    /**操作节点*/
    @ApiModelProperty(value = "操作节点")
    @Dict(dicCode = "stream_node")
    private String operationNode;
    /**操作人意见*/
    @ApiModelProperty(value = "操作人意见")
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/vo/ButtonVo.java
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,16 @@
package org.jeecg.modules.eam.vo;
import lombok.Data;
/**
 * @author lnl
 */
@Data
public class ButtonVo {
    private String name;
    private String value;
    private Integer nodeSort;
    private String node;
    private String streamId;
    private String remark;
}