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