From ce5f5d0a9d3ca3304f5e473e2f70ddfbea163f99 Mon Sep 17 00:00:00 2001 From: “linengliang” <vanSuperEnergy@163.com> Date: 星期三, 22 十一月 2023 19:07:09 +0800 Subject: [PATCH] 签审流 --- lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/Stream.java | 2 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/vo/ButtonVo.java | 16 ++++ lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/StreamOperation.java | 5 + lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/StreamController.java | 175 +++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 193 insertions(+), 5 deletions(-) diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/StreamController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/StreamController.java index 5aa0ffe..3eb1834 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/StreamController.java +++ b/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()+"鐨凙BC鏍囪瘑鍙樻洿鍗曢渶瑕佺‘璁�"; + 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("绛惧娴佺郴缁熷嚭鐜伴敊璇紝璇疯仈绯荤鐞嗗憳"); + } + } diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/Stream.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/Stream.java index fb3d97d..b45c584 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/Stream.java +++ b/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; diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/StreamOperation.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/StreamOperation.java index 0749d12..80a575f 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/entity/StreamOperation.java +++ b/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; /**涓婁竴姝ユ搷浣淚D*/ @Excel(name = "涓婁竴姝ユ搷浣淚D", 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; /**娴両D*/ @ApiModelProperty(value = "娴両D") 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 = "鎿嶄綔浜烘剰瑙�") diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/vo/ButtonVo.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/vo/ButtonVo.java new file mode 100644 index 0000000..018edc1 --- /dev/null +++ b/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; +} -- Gitblit v1.9.3