소스 검색

Merge remote-tracking branch 'origin/master' into master

yangyj 2 년 전
부모
커밋
695f70fa33
24개의 변경된 파일557개의 추가작업 그리고 504개의 파일을 삭제
  1. 2 1
      blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/dto/UserDTO.java
  2. 12 0
      blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/User.java
  3. 55 0
      blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/vo/DeptUserVO.java
  4. 57 4
      blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java
  5. 0 1
      blade-service/blade-control/src/main/java/org/springblade/control/service/TaskProcessService.java
  6. 14 53
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/AttendanceTripServiceImpl.java
  7. 14 57
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/EMFinancialReimbursementServiceImpl.java
  8. 15 51
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/EMInvoiceServiceImpl.java
  9. 14 59
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/EMLoanServiceImpl.java
  10. 15 57
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/EMOutsourcingPayServiceImpl.java
  11. 16 57
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/EMPayServiceImpl.java
  12. 12 54
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/EMPurchaseServiceImpl.java
  13. 12 48
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/EMUseCarServiceImpl.java
  14. 37 36
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/LogHistoryServiceImpl.java
  15. 191 17
      blade-service/blade-control/src/main/java/org/springblade/control/service/impl/TaskProcessServiceImpl.java
  16. 2 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveAutoRuleWbsMapper.java
  17. 8 0
      blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveAutoRuleWbsMapper.xml
  18. 7 4
      blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeServiceImpl.java
  19. 5 1
      blade-service/blade-system/src/main/java/org/springblade/system/controller/DeptController.java
  20. 5 0
      blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java
  21. 55 1
      blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java
  22. 2 0
      blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.xml
  23. 2 1
      blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java
  24. 5 2
      blade-service/blade-user/src/main/java/org/springblade/system/user/wrapper/UserWrapper.java

+ 2 - 1
blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/dto/UserDTO.java

@@ -5,6 +5,7 @@ import lombok.Data;
 import lombok.EqualsAndHashCode;
 import org.springblade.manager.dto.SaveUserInfoByProjectDTO;
 import org.springblade.system.user.entity.User;
+import org.springblade.system.user.vo.DeptUserVO;
 
 import java.util.List;
 
@@ -24,6 +25,6 @@ public class UserDTO extends User {
      * 组织机构
      */
     @ApiModelProperty(value = "组织机构对象(内控)")
-    private List<SaveUserInfoByProjectDTO> deptList;
+    private List<DeptUserVO> deptList;
 
 }

+ 12 - 0
blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/entity/User.java

@@ -152,4 +152,16 @@ public class User extends TenantEntity {
     @ApiModelProperty(value = "职位")
     private String position;
 
+    /**
+     * 部门id负责人
+     */
+    @ApiModelProperty(value = "部门id负责人")
+    private String isLeader;
+
+    /**
+     * 职位
+     */
+    @ApiModelProperty(value = "日单价")
+    private double oneMoney;
+
 }

+ 55 - 0
blade-service-api/blade-user-api/src/main/java/org/springblade/system/user/vo/DeptUserVO.java

@@ -0,0 +1,55 @@
+/*
+ *      Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ *  Redistribution and use in source and binary forms, with or without
+ *  modification, are permitted provided that the following conditions are met:
+ *
+ *  Redistributions of source code must retain the above copyright notice,
+ *  this list of conditions and the following disclaimer.
+ *  Redistributions in binary form must reproduce the above copyright
+ *  notice, this list of conditions and the following disclaimer in the
+ *  documentation and/or other materials provided with the distribution.
+ *  Neither the name of the dreamlu.net developer nor the names of its
+ *  contributors may be used to endorse or promote products derived from
+ *  this software without specific prior written permission.
+ *  Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.system.user.vo;
+
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.databind.annotation.JsonSerialize;
+import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.springblade.system.user.entity.User;
+
+/**
+ * 视图实体类
+ *
+ * @author Chill
+ */
+@Data
+@ApiModel(value = "机构对象", description = "机构对象")
+public class DeptUserVO {
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 部门Id
+     */
+    @ApiModelProperty(value = "部门Id")
+    private Long deptId;
+
+    /**
+     * 性别
+     */
+    @ApiModelProperty(value = "岗位Id")
+    private Long postId;
+
+    /**
+     * 拓展信息
+     */
+    @ApiModelProperty(value = "是否负责人(1:是 2:否)")
+    private Integer isLeader;
+}

+ 57 - 4
blade-service/blade-archive/src/main/java/org/springblade/archive/service/impl/ArchivesAutoServiceImpl.java

@@ -1080,7 +1080,11 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		//获取案卷内文件总页数
 		int pageN=0;
 		for(ArchiveFile file:waitArchiveFiles){
-			pageN=pageN+file.getFilePage();
+			Integer filePage=file.getFilePage();
+			if(filePage==null){
+				filePage=0;
+			}
+			pageN=pageN+filePage;
 		}
 		//默认组卷存在跨节点组卷  注意案卷归属节点,案卷命名方式
 		//获取案卷题名
@@ -1163,7 +1167,11 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		//获取案卷内文件总页数
 		int pageN=0;
 		for(ArchiveFile file:waitArchiveFiles){
-			pageN=pageN+file.getFilePage();
+			Integer filePage= file.getFilePage();
+			if(filePage==null){
+				filePage=0;
+			}
+			pageN=pageN+filePage;
 		}
 
 
@@ -1190,9 +1198,9 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 
 
 	/**
-	 * 单租组卷流程  节点下的文件只在当前节点下组卷
+	 * 单租组卷流程  节点下的文件只在当前节点下组卷   满规格另组一卷 不跨节点
 	 */
-	private void archiveAutoMethod3(List<ArchiveTreeContract> list,Map<String,List<ArchiveFile>> boxMap){
+	private void archiveAutoMethod3_old(List<ArchiveTreeContract> list,Map<String,List<ArchiveFile>> boxMap){
 		//步骤1:遍历节点集合
 		for(ArchiveTreeContract node:list){
 			//步骤2:获取当前节点的案卷规格
@@ -1225,6 +1233,9 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 						//单独组卷流程
 						//步骤6:计算和判断待组卷文件集合是否达到组卷要求,达到要求创建案卷,案卷归属当前节点,案卷下文件改为已组卷
 						Integer filePage = file.getFilePage();
+						if(filePage==null){
+							filePage=0;
+						}
 						archivesSize=archivesSize+filePage;
 						Integer checkStatus = checkSpecificationSize(specificationSize, archivesSize);
 						//步骤6.1未到规格 不组卷
@@ -1282,6 +1293,45 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 		}
 	}
 
+	/**
+	 * 单租组卷流程  20230628 SBD又说单独组卷规则节点下只组一卷,不用满规格新组。这辈子没见过这样的人。
+	 * @param list
+	 * @param boxMap
+	 */
+	private void archiveAutoMethod3(List<ArchiveTreeContract> list,Map<String,List<ArchiveFile>> boxMap){
+		//步骤1:遍历节点集合
+		for(ArchiveTreeContract node:list){
+			//步骤2:查询节点下的未组卷文件
+			List<ArchiveFile> archiveFiles = archiveFileClient.getListByNodeID(node.getId().toString());
+			//步骤3:遍历未归档文件
+			//待组卷文件集合
+			List<ArchiveFile> waitArchiveFiles = new ArrayList<>();
+			//待组卷文件总页数
+			int archivesSize=0;
+			if(archiveFiles!=null){
+				for(ArchiveFile file:archiveFiles){
+					//步骤4:断文件是否存在分盒设置
+					if(file.getBoxNumber()!=null && file.getBoxNumber()!=-1){
+						//添加到分盒文件集合
+						addBoxMap(file,boxMap);
+					}else{
+						//单独组卷流程
+						Integer filePage = file.getFilePage();
+						if(filePage==null){
+							filePage=0;
+						}
+						archivesSize=archivesSize+filePage;
+						waitArchiveFiles.add(file);
+					}
+				}
+				//步骤3:将waitArchiveFiles组卷
+				createArchive3(waitArchiveFiles,node,archivesSize);
+				//将待组卷文件集合,总页数还原初始值,
+				waitArchiveFiles.clear();
+			}
+		}
+	}
+
 	/**
 	 * 分类并卷组卷  设置分类的节点下只有一个案卷,节点下的所有文件都组成这个案卷。如果设置分类节点(select=1的)多个,案卷归属排序第一个节点。
 	 */
@@ -1398,6 +1448,9 @@ public class ArchivesAutoServiceImpl extends BaseServiceImpl<ArchivesAutoMapper,
 				}else{
 					//步骤3.5 计算和判断待组卷文件集合是否达到组卷要求,达到要求创建案卷,案卷归属当前节点,案卷下文件改为已组卷
 					Integer filePage = file.getFilePage();
+					if(filePage==null){
+						filePage=0;
+					}
 					archivesSize=archivesSize+filePage;
 					Integer checkStatus = checkSpecificationSize(specificationSize, archivesSize);
 					//步骤3.6未到规格 不组卷

+ 0 - 1
blade-service/blade-control/src/main/java/org/springblade/control/service/TaskProcessService.java

@@ -35,5 +35,4 @@ public interface TaskProcessService extends BaseService<TaskProcessInfo> {
     boolean dataDictSubmit(TaskDataDictDTO dto);
 
     Map<String, List<TaskProcessRecordDictInfo>> dataDictList(String id);
-
 }

+ 14 - 53
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/AttendanceTripServiceImpl.java

@@ -156,63 +156,24 @@ public class AttendanceTripServiceImpl extends BaseServiceImpl<AttendanceTripMap
                         var = true;
                     }
                 }
-                if (ObjectUtil.isNotEmpty(dto.getResponsibleUser()) && ObjectUtil.isNotEmpty(dto.getPersonnelUser())) {
-                    //新增审批任务
-                    if (ObjectUtil.isEmpty(SecureUtil.getUserName())) {
-                        throw new ServiceException("获取当前用户信息失败,请联系管理员");
-                    }
-                    TaskProcessInfo taskProcessInfo = new TaskProcessInfo();
-                    taskProcessInfo.setId(SnowFlakeUtil.getId());
-                    taskProcessInfo.setStatus(1); //待审批
-                    taskProcessInfo.setReportDate(new Date());
-                    taskProcessInfo.setTaskType(9); //出差审批
-                    taskProcessInfo.setTaskName("【" + SecureUtil.getUserName() + "】向您发起【出差审批】审批");
-                    //上报人
-                    taskProcessInfo.setReportUserId(SecureUtil.getUserId());
-
-                    //审批人
-                    List<String> auditUserIds = new LinkedList<>();
-                    EMProcessTaskUser responsibleObj = dto.getResponsibleUser(); //部门负责人
-                    auditUserIds.add(responsibleObj.getUserId());
-                    EMProcessTaskUser personnelUser = dto.getPersonnelUser(); //人事
-                    auditUserIds.add(personnelUser.getUserId());
-                    List<String> nonEmptyAuditUserIds = new LinkedList<>();
-                    for (String userId : auditUserIds) {
-                        if (StringUtils.isNotEmpty(userId)) {
-                            nonEmptyAuditUserIds.add(userId);
-                        }
-                    }
-                    if (nonEmptyAuditUserIds.size() == 0) {
-                        taskProcessInfo.setAuditUserIds(null);
-                    } else {
-                        taskProcessInfo.setAuditUserIds(StringUtils.join(nonEmptyAuditUserIds, ","));
-                    }
 
+                //新增审批任务
+                TaskProcessInfo taskProcessInfo = new TaskProcessInfo();
+                taskProcessService.buildTaskProcessInfoImpl(9, taskProcessInfo);
 
-                    //抄送人
-                    if (ObjectUtil.isNotEmpty(dto.getCcUserList())) {
-                        List<String> ccUserObjList = dto.getCcUserList().stream().map(EMProcessTaskUser::getUserId).collect(Collectors.toList());
-                        taskProcessInfo.setCcUserIds(StringUtils.join(ccUserObjList, ","));
-                    }
-                    taskProcessService.save(taskProcessInfo);
-
-                    //新增信息
-                    dto.setIsTemp(1); //提交
-                    dto.setStatus(1); //待审批
-                    if (var) {
-                        this.save(dto);
-                    } else {
-                        this.saveOrUpdate(dto);
-                    }
-
-                    //新增审批任务关联信息
-                    jdbcTemplate.execute("delete from c_expense_task_record where task_id = " + taskProcessInfo.getId() + " and expense_info_id = " + dto.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + dto.getId() + ",9)");
-
-                    //关联项目id,项目计划预算等,在任务闭环时计算推送
-
+                //新增信息
+                dto.setIsTemp(1); //提交
+                dto.setStatus(1); //待审批
+                if (var) {
+                    this.save(dto);
                 } else {
-                    throw new ServiceException("获取当前审批流程人员信息失败,请联系管理员");
+                    this.saveOrUpdate(dto);
                 }
+
+                //新增审批任务关联信息
+                jdbcTemplate.execute("delete from c_expense_task_record where task_id = " + taskProcessInfo.getId() + " and expense_info_id = " + dto.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + dto.getId() + ",9)");
+
+                //关联项目id,项目计划预算等,在任务闭环时计算推送
             }
         }
         return true;

+ 14 - 57
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/EMFinancialReimbursementServiceImpl.java

@@ -172,67 +172,24 @@ public class EMFinancialReimbursementServiceImpl extends BaseServiceImpl<ExMFina
                         dto.setFrNumber(this.getNumber());
                     }
                 }
-                if (ObjectUtil.isNotEmpty(dto.getResponsibleUser()) && ObjectUtil.isNotEmpty(dto.getFinanceUser()) && ObjectUtil.isNotEmpty(dto.getCashierUser())) {
-                    //新增审批任务
-                    TaskProcessInfo taskProcessInfo = new TaskProcessInfo();
-                    taskProcessInfo.setId(SnowFlakeUtil.getId());
-                    taskProcessInfo.setStatus(1); //待审批
-                    taskProcessInfo.setReportDate(new Date());
-                    taskProcessInfo.setTaskType(2); //报销审批
-                    taskProcessInfo.setTaskName("【" + SecureUtil.getUserName() + "】向您发起【报销审批】审批");
-                    //上报人
-                    taskProcessInfo.setReportUserId(SecureUtil.getUserId());
 
-                    //审批人
-                    List<String> auditUserIds = new LinkedList<>();
-                    EMProcessTaskUser responsibleObj = dto.getResponsibleUser(); //部门负责人
-                    auditUserIds.add(responsibleObj.getUserId());
-                    EMProcessTaskUser financeObj = dto.getFinanceUser(); //财务
-                    auditUserIds.add(financeObj.getUserId());
-                    if (ObjectUtil.isNotEmpty(dto.getFinalConfirmationUser())) { //最终确认付款人
-                        EMProcessTaskUser finalConfirmationObj = dto.getFinalConfirmationUser();
-                        auditUserIds.add(finalConfirmationObj.getUserId());
-                    }
-                    EMProcessTaskUser cashierObj = dto.getCashierUser(); //出纳
-                    auditUserIds.add(cashierObj.getUserId());
-
-                    List<String> nonEmptyAuditUserIds = new LinkedList<>();
-                    for (String userId : auditUserIds) {
-                        if (StringUtils.isNotEmpty(userId)) {
-                            nonEmptyAuditUserIds.add(userId);
-                        }
-                    }
-                    if (nonEmptyAuditUserIds.size() == 0) {
-                        taskProcessInfo.setAuditUserIds(null);
-                    } else {
-                        taskProcessInfo.setAuditUserIds(StringUtils.join(nonEmptyAuditUserIds, ","));
-                    }
-
-
-                    //抄送人
-                    if (ObjectUtil.isNotEmpty(dto.getCcUserList())) {
-                        List<String> ccUserObjList = dto.getCcUserList().stream().map(EMProcessTaskUser::getUserId).collect(Collectors.toList());
-                        taskProcessInfo.setCcUserIds(StringUtils.join(ccUserObjList, ","));
-                    }
-                    taskProcessService.save(taskProcessInfo);
-
-                    //新增信息
-                    dto.setIsTemp(1); //提交
-                    dto.setStatus(1); //待审批
-                    if (var) {
-                        this.save(dto);
-                    } else {
-                        this.saveOrUpdate(dto);
-                    }
-
-                    //新增审批任务关联信息
-                    jdbcTemplate.execute("delete from c_expense_task_record where task_id = " + taskProcessInfo.getId() + " and expense_info_id = " + dto.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + dto.getId() + ",2)");
-
-                    //关联项目预算budgetPlanIds目前只做存储,在审批完成后闭环时再进行计算推送
+                //新增审批任务
+                TaskProcessInfo taskProcessInfo = new TaskProcessInfo();
+                taskProcessService.buildTaskProcessInfoImpl(2, taskProcessInfo);
 
+                //新增信息
+                dto.setIsTemp(1); //提交
+                dto.setStatus(1); //待审批
+                if (var) {
+                    this.save(dto);
                 } else {
-                    throw new ServiceException("获取当前审批流程人员信息失败,请联系管理员");
+                    this.saveOrUpdate(dto);
                 }
+
+                //新增审批任务关联信息
+                jdbcTemplate.execute("delete from c_expense_task_record where task_id = " + taskProcessInfo.getId() + " and expense_info_id = " + dto.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + dto.getId() + ",2)");
+
+                //关联项目预算budgetPlanIds目前只做存储,在审批完成后闭环时再进行计算推送
             }
         }
         return true;

+ 15 - 51
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/EMInvoiceServiceImpl.java

@@ -154,62 +154,26 @@ public class EMInvoiceServiceImpl extends BaseServiceImpl<ExMInvoiceMapper, EMIn
                     dto.setInvoiceNumber(this.getNumber());
                 }
             }
-            if (ObjectUtil.isNotEmpty(dto.getResponsibleUser()) && ObjectUtil.isNotEmpty(dto.getFinanceUser())) {
-                //新增审批任务
-                TaskProcessInfo taskProcessInfo = new TaskProcessInfo();
-                taskProcessInfo.setId(SnowFlakeUtil.getId());
-                taskProcessInfo.setStatus(1); //待审批
-                taskProcessInfo.setReportDate(new Date());
-                taskProcessInfo.setTaskType(7); //发票审批
-                taskProcessInfo.setTaskName("【" + SecureUtil.getUserName() + "】向您发起【发票审批】审批");
-                //上报人
-                taskProcessInfo.setReportUserId(SecureUtil.getUserId());
 
-                //审批人
-                List<String> auditUserIds = new LinkedList<>();
-                EMProcessTaskUser responsibleObj = dto.getResponsibleUser(); //部门负责人
-                auditUserIds.add(responsibleObj.getUserId());
-                EMProcessTaskUser financeObj = dto.getFinanceUser(); //财务
-                auditUserIds.add(financeObj.getUserId());
+            //新增审批任务
+            TaskProcessInfo taskProcessInfo = new TaskProcessInfo();
+            taskProcessService.buildTaskProcessInfoImpl(7, taskProcessInfo);
 
-                List<String> nonEmptyAuditUserIds = new LinkedList<>();
-                for (String userId : auditUserIds) {
-                    if (StringUtils.isNotEmpty(userId)) {
-                        nonEmptyAuditUserIds.add(userId);
-                    }
-                }
-                if (nonEmptyAuditUserIds.size() == 0) {
-                    taskProcessInfo.setAuditUserIds(null);
-                } else {
-                    taskProcessInfo.setAuditUserIds(StringUtils.join(nonEmptyAuditUserIds, ","));
-                }
-
-                //抄送人
-                if (ObjectUtil.isNotEmpty(dto.getCcUserList())) {
-                    List<String> ccUserObjList = dto.getCcUserList().stream().map(EMProcessTaskUser::getUserId).collect(Collectors.toList());
-                    taskProcessInfo.setCcUserIds(StringUtils.join(ccUserObjList, ","));
-                }
-                taskProcessService.save(taskProcessInfo);
-
-                //新增信息
-                dto.setIsTemp(1); //提交
-                dto.setStatus(1); //待审批
-                if (var) {
-                    this.save(dto);
-                } else {
-                    this.saveOrUpdate(dto);
-                }
-
-                //新增审批任务关联信息
-                jdbcTemplate.execute("delete from c_expense_task_record where task_id = " + taskProcessInfo.getId() + " and expense_info_id = " + dto.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + dto.getId() + ",7)");
+            //新增信息
+            dto.setIsTemp(1); //提交
+            dto.setStatus(1); //待审批
+            if (var) {
+                this.save(dto);
+            } else {
+                this.saveOrUpdate(dto);
+            }
 
-                //存储关联项目id,审批闭环后处理项目相关业务
+            //新增审批任务关联信息
+            jdbcTemplate.execute("delete from c_expense_task_record where task_id = " + taskProcessInfo.getId() + " and expense_info_id = " + dto.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + dto.getId() + ",7)");
 
-                return true;
+            //存储关联项目id,审批闭环后处理项目相关业务
 
-            } else {
-                throw new ServiceException("获取当前审批流程人员信息失败,请联系管理员");
-            }
+            return true;
         }
         return false;
     }

+ 14 - 59
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/EMLoanServiceImpl.java

@@ -154,69 +154,24 @@ public class EMLoanServiceImpl extends BaseServiceImpl<ExMLoanMapper, EMLoanInfo
                     dto.setLoanNumber(this.getNumber());
                 }
             }
-            if (ObjectUtil.isNotEmpty(dto.getResponsibleUser()) && ObjectUtil.isNotEmpty(dto.getFinanceUser()) && ObjectUtil.isNotEmpty(dto.getCashierUser())) {
-                //新增审批任务
-                if (ObjectUtil.isEmpty(SecureUtil.getUserName())) {
-                    throw new ServiceException("获取当前用户信息失败,请联系管理员");
-                }
-                TaskProcessInfo taskProcessInfo = new TaskProcessInfo();
-                taskProcessInfo.setId(SnowFlakeUtil.getId());
-                taskProcessInfo.setStatus(1); //待审批
-                taskProcessInfo.setReportDate(new Date());
-                taskProcessInfo.setTaskType(4); //借款审批
-                taskProcessInfo.setTaskName("【" + SecureUtil.getUserName() + "】向您发起【借款审批】审批");
-                //上报人
-                taskProcessInfo.setReportUserId(SecureUtil.getUserId());
-
-                //审批人
-                List<String> auditUserIds = new LinkedList<>();
-                EMProcessTaskUser responsibleObj = dto.getResponsibleUser(); //部门负责人
-                auditUserIds.add(responsibleObj.getUserId());
-                EMProcessTaskUser financeObj = dto.getFinanceUser(); //财务
-                auditUserIds.add(financeObj.getUserId());
-                if (ObjectUtil.isNotEmpty(dto.getFinalConfirmationUser())) { //最终确认付款人
-                    EMProcessTaskUser finalConfirmationObj = dto.getFinalConfirmationUser();
-                    auditUserIds.add(finalConfirmationObj.getUserId());
-                }
-                EMProcessTaskUser cashierObj = dto.getCashierUser(); //出纳
-                auditUserIds.add(cashierObj.getUserId());
-
-                List<String> nonEmptyAuditUserIds = new LinkedList<>();
-                for (String userId : auditUserIds) {
-                    if (StringUtils.isNotEmpty(userId)) {
-                        nonEmptyAuditUserIds.add(userId);
-                    }
-                }
-                if (nonEmptyAuditUserIds.size() == 0) {
-                    taskProcessInfo.setAuditUserIds(null);
-                } else {
-                    taskProcessInfo.setAuditUserIds(StringUtils.join(nonEmptyAuditUserIds, ","));
-                }
-
-                //抄送人
-                if (ObjectUtil.isNotEmpty(dto.getCcUserList())) {
-                    List<String> ccUserObjList = dto.getCcUserList().stream().map(EMProcessTaskUser::getUserId).collect(Collectors.toList());
-                    taskProcessInfo.setCcUserIds(StringUtils.join(ccUserObjList, ","));
-                }
-                taskProcessService.save(taskProcessInfo);
-
-                //新增信息
-                dto.setIsTemp(1); //提交
-                dto.setStatus(1); //待审批
-                if (var) {
-                    this.save(dto);
-                } else {
-                    this.saveOrUpdate(dto);
-                }
 
-                //新增审批任务关联信息
-                jdbcTemplate.execute("delete from c_expense_task_record where task_id = " + taskProcessInfo.getId() + " and expense_info_id = " + dto.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + dto.getId() + ",4)");
-
-                return true;
+            //新增审批任务
+            TaskProcessInfo taskProcessInfo = new TaskProcessInfo();
+            taskProcessService.buildTaskProcessInfoImpl(4, taskProcessInfo);
 
+            //新增信息
+            dto.setIsTemp(1); //提交
+            dto.setStatus(1); //待审批
+            if (var) {
+                this.save(dto);
             } else {
-                throw new ServiceException("获取当前审批流程人员信息失败,请联系管理员");
+                this.saveOrUpdate(dto);
             }
+
+            //新增审批任务关联信息
+            jdbcTemplate.execute("delete from c_expense_task_record where task_id = " + taskProcessInfo.getId() + " and expense_info_id = " + dto.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + dto.getId() + ",4)");
+
+            return true;
         }
         return false;
     }

+ 15 - 57
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/EMOutsourcingPayServiceImpl.java

@@ -146,68 +146,26 @@ public class EMOutsourcingPayServiceImpl extends BaseServiceImpl<ExMOutsourcingP
                     var = true;
                 }
             }
-            if (ObjectUtil.isNotEmpty(dto.getResponsibleUser()) && ObjectUtil.isNotEmpty(dto.getFinanceUser()) && ObjectUtil.isNotEmpty(dto.getCashierUser())) {
-                //新增审批任务
-                TaskProcessInfo taskProcessInfo = new TaskProcessInfo();
-                taskProcessInfo.setId(SnowFlakeUtil.getId());
-                taskProcessInfo.setStatus(1); //待审批
-                taskProcessInfo.setReportDate(new Date());
-                taskProcessInfo.setTaskType(8); //外包支付
-                taskProcessInfo.setTaskName("【" + SecureUtil.getUserName() + "】向您发起【外包支付】审批");
-                //上报人
-                taskProcessInfo.setReportUserId(SecureUtil.getUserId());
 
-                //审批人
-                List<String> auditUserIds = new LinkedList<>();
-                EMProcessTaskUser responsibleObj = dto.getResponsibleUser(); //部门负责人
-                auditUserIds.add(responsibleObj.getUserId());
-                EMProcessTaskUser financeObj = dto.getFinanceUser(); //财务
-                auditUserIds.add(financeObj.getUserId());
-                if (ObjectUtil.isNotEmpty(dto.getFinalConfirmationUser())) { //最终确认付款人
-                    EMProcessTaskUser finalConfirmationObj = dto.getFinalConfirmationUser();
-                    auditUserIds.add(finalConfirmationObj.getUserId());
-                }
-                EMProcessTaskUser cashierObj = dto.getCashierUser(); //出纳
-                auditUserIds.add(cashierObj.getUserId());
+            //新增审批任务
+            TaskProcessInfo taskProcessInfo = new TaskProcessInfo();
+            taskProcessService.buildTaskProcessInfoImpl(8, taskProcessInfo);
 
-                List<String> nonEmptyAuditUserIds = new LinkedList<>();
-                for (String userId : auditUserIds) {
-                    if (StringUtils.isNotEmpty(userId)) {
-                        nonEmptyAuditUserIds.add(userId);
-                    }
-                }
-                if (nonEmptyAuditUserIds.size() == 0) {
-                    taskProcessInfo.setAuditUserIds(null);
-                } else {
-                    taskProcessInfo.setAuditUserIds(StringUtils.join(nonEmptyAuditUserIds, ","));
-                }
-
-                //抄送人
-                if (ObjectUtil.isNotEmpty(dto.getCcUserList())) {
-                    List<String> ccUserObjList = dto.getCcUserList().stream().map(EMProcessTaskUser::getUserId).collect(Collectors.toList());
-                    taskProcessInfo.setCcUserIds(StringUtils.join(ccUserObjList, ","));
-                }
-                taskProcessService.save(taskProcessInfo);
-
-                //新增信息
-                dto.setIsTemp(1); //提交
-                dto.setStatus(1); //待审批
-                if (var) {
-                    this.save(dto);
-                } else {
-                    this.saveOrUpdate(dto);
-                }
-
-                //新增审批任务关联信息
-                jdbcTemplate.execute("delete from c_expense_task_record where task_id = " + taskProcessInfo.getId() + " and expense_info_id = " + dto.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + dto.getId() + ",8)");
+            //新增信息
+            dto.setIsTemp(1); //提交
+            dto.setStatus(1); //待审批
+            if (var) {
+                this.save(dto);
+            } else {
+                this.saveOrUpdate(dto);
+            }
 
-                //关联项目id只做存储,任务闭环时在进行业务计算
+            //新增审批任务关联信息
+            jdbcTemplate.execute("delete from c_expense_task_record where task_id = " + taskProcessInfo.getId() + " and expense_info_id = " + dto.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + dto.getId() + ",8)");
 
-                return true;
+            //关联项目id只做存储,任务闭环时在进行业务计算
 
-            } else {
-                throw new ServiceException("获取当前审批流程人员信息失败,请联系管理员");
-            }
+            return true;
         }
         return false;
     }

+ 16 - 57
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/EMPayServiceImpl.java

@@ -127,67 +127,26 @@ public class EMPayServiceImpl extends BaseServiceImpl<ExMPayMapper, EMPayInfo> i
                     var = true;
                 }
             }
-            if (ObjectUtil.isNotEmpty(dto.getResponsibleUser()) && ObjectUtil.isNotEmpty(dto.getFinanceUser()) && ObjectUtil.isNotEmpty(dto.getCashierUser())) {
-                //新增审批任务
-                TaskProcessInfo taskProcessInfo = new TaskProcessInfo();
-                taskProcessInfo.setId(SnowFlakeUtil.getId());
-                taskProcessInfo.setStatus(1); //待审批
-                taskProcessInfo.setReportDate(new Date());
-                taskProcessInfo.setTaskType(3); //支付审批
-                taskProcessInfo.setTaskName("【" + SecureUtil.getUserName() + "】向您发起【支付审批】审批");
-                //上报人
-                taskProcessInfo.setReportUserId(SecureUtil.getUserId());
-
-                //审批人
-                List<String> auditUserIds = new LinkedList<>();
-                EMProcessTaskUser responsibleObj = dto.getResponsibleUser(); //部门负责人
-                auditUserIds.add(responsibleObj.getUserId());
-                EMProcessTaskUser financeObj = dto.getFinanceUser(); //财务
-                auditUserIds.add(financeObj.getUserId());
-                if (ObjectUtil.isNotEmpty(dto.getFinalConfirmationUser())) { //最终确认付款人
-                    EMProcessTaskUser finalConfirmationObj = dto.getFinalConfirmationUser();
-                    auditUserIds.add(finalConfirmationObj.getUserId());
-                }
-                EMProcessTaskUser cashierObj = dto.getCashierUser(); //出纳
-                auditUserIds.add(cashierObj.getUserId());
-
-                List<String> nonEmptyAuditUserIds = new LinkedList<>();
-                for (String userId : auditUserIds) {
-                    if (StringUtils.isNotEmpty(userId)) {
-                        nonEmptyAuditUserIds.add(userId);
-                    }
-                }
-                if (nonEmptyAuditUserIds.size() == 0) {
-                    taskProcessInfo.setAuditUserIds(null);
-                } else {
-                    taskProcessInfo.setAuditUserIds(StringUtils.join(nonEmptyAuditUserIds, ","));
-                }
-
-                //抄送人
-                if (ObjectUtil.isNotEmpty(dto.getCcUserList())) {
-                    List<String> ccUserObjList = dto.getCcUserList().stream().map(EMProcessTaskUser::getUserId).collect(Collectors.toList());
-                    taskProcessInfo.setCcUserIds(StringUtils.join(ccUserObjList, ","));
-                }
-                taskProcessService.save(taskProcessInfo);
-
-                //新增信息
-                dto.setIsTemp(1); //提交
-                dto.setStatus(1); //待审批
-                if (var) {
-                    this.save(dto);
-                } else {
-                    this.saveOrUpdate(dto);
-                }
 
-                //新增审批任务关联信息
-                jdbcTemplate.execute("delete from c_expense_task_record where task_id = " + taskProcessInfo.getId() + " and expense_info_id = " + dto.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + dto.getId() + ",3)");
+            //新增审批任务
+            TaskProcessInfo taskProcessInfo = new TaskProcessInfo();
+            taskProcessService.buildTaskProcessInfoImpl(3, taskProcessInfo);
 
-                //关联项目、合同项目提成等目前只做存储,在审批完成后闭环时再进行计算推送
-
-                return true;
+            //新增信息
+            dto.setIsTemp(1); //提交
+            dto.setStatus(1); //待审批
+            if (var) {
+                this.save(dto);
             } else {
-                throw new ServiceException("获取当前审批流程人员信息失败,请联系管理员");
+                this.saveOrUpdate(dto);
             }
+
+            //新增审批任务关联信息
+            jdbcTemplate.execute("delete from c_expense_task_record where task_id = " + taskProcessInfo.getId() + " and expense_info_id = " + dto.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + dto.getId() + ",3)");
+
+            //关联项目、合同项目提成等目前只做存储,在审批完成后闭环时再进行计算推送
+
+            return true;
         }
         return false;
     }

+ 12 - 54
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/EMPurchaseServiceImpl.java

@@ -154,64 +154,22 @@ public class EMPurchaseServiceImpl extends BaseServiceImpl<ExMPurchaseMapper, EM
                         var = true;
                     }
                 }
-                if (ObjectUtil.isNotEmpty(dto.getResponsibleUser()) && ObjectUtil.isNotEmpty(dto.getFinanceUser()) && ObjectUtil.isNotEmpty(dto.getCashierUser())) {
-                    //新增审批任务
-                    TaskProcessInfo taskProcessInfo = new TaskProcessInfo();
-                    taskProcessInfo.setId(SnowFlakeUtil.getId());
-                    taskProcessInfo.setStatus(1); //待审批
-                    taskProcessInfo.setReportDate(new Date());
-                    taskProcessInfo.setTaskType(5); //采购审批
-                    taskProcessInfo.setTaskName("【" + SecureUtil.getUserName() + "】向您发起【采购审批】审批");
-                    //上报人
-                    taskProcessInfo.setReportUserId(SecureUtil.getUserId());
 
-                    //审批人
-                    List<String> auditUserIds = new LinkedList<>();
-                    EMProcessTaskUser responsibleObj = dto.getResponsibleUser(); //部门负责人
-                    auditUserIds.add(responsibleObj.getUserId());
-                    EMProcessTaskUser financeObj = dto.getFinanceUser(); //财务
-                    auditUserIds.add(financeObj.getUserId());
-                    if (ObjectUtil.isNotEmpty(dto.getFinalConfirmationUser())) { //最终确认付款人
-                        EMProcessTaskUser finalConfirmationObj = dto.getFinalConfirmationUser();
-                        auditUserIds.add(finalConfirmationObj.getUserId());
-                    }
-                    EMProcessTaskUser cashierObj = dto.getCashierUser(); //出纳
-                    auditUserIds.add(cashierObj.getUserId());
-
-                    List<String> nonEmptyAuditUserIds = new LinkedList<>();
-                    for (String userId : auditUserIds) {
-                        if (StringUtils.isNotEmpty(userId)) {
-                            nonEmptyAuditUserIds.add(userId);
-                        }
-                    }
-                    if (nonEmptyAuditUserIds.size() == 0) {
-                        taskProcessInfo.setAuditUserIds(null);
-                    } else {
-                        taskProcessInfo.setAuditUserIds(StringUtils.join(nonEmptyAuditUserIds, ","));
-                    }
-
-                    //抄送人
-                    if (ObjectUtil.isNotEmpty(dto.getCcUserList())) {
-                        List<String> ccUserObjList = dto.getCcUserList().stream().map(EMProcessTaskUser::getUserId).collect(Collectors.toList());
-                        taskProcessInfo.setCcUserIds(StringUtils.join(ccUserObjList, ","));
-                    }
-                    taskProcessService.save(taskProcessInfo);
-
-                    //新增信息
-                    dto.setIsTemp(1); //提交
-                    dto.setStatus(1); //待审批
-                    if (var) {
-                        this.save(dto);
-                    } else {
-                        this.saveOrUpdate(dto);
-                    }
-
-                    //新增审批任务关联信息
-                    jdbcTemplate.execute("delete from c_expense_task_record where task_id = " + taskProcessInfo.getId() + " and expense_info_id = " + dto.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + dto.getId() + ",5)");
+                //新增审批任务
+                TaskProcessInfo taskProcessInfo = new TaskProcessInfo();
+                taskProcessService.buildTaskProcessInfoImpl(5, taskProcessInfo);
 
+                //新增信息
+                dto.setIsTemp(1); //提交
+                dto.setStatus(1); //待审批
+                if (var) {
+                    this.save(dto);
                 } else {
-                    throw new ServiceException("获取当前审批流程人员信息失败,请联系管理员");
+                    this.saveOrUpdate(dto);
                 }
+
+                //新增审批任务关联信息
+                jdbcTemplate.execute("delete from c_expense_task_record where task_id = " + taskProcessInfo.getId() + " and expense_info_id = " + dto.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + dto.getId() + ",5)");
             }
         }
         return true;

+ 12 - 48
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/EMUseCarServiceImpl.java

@@ -156,58 +156,22 @@ public class EMUseCarServiceImpl extends BaseServiceImpl<ExMUseCarMapper, EMUseC
                         var = true;
                     }
                 }
-                if (ObjectUtil.isNotEmpty(dto.getResponsibleUser()) && ObjectUtil.isNotEmpty(dto.getPersonnelUser())) {
-                    //新增审批任务
-                    TaskProcessInfo taskProcessInfo = new TaskProcessInfo();
-                    taskProcessInfo.setId(SnowFlakeUtil.getId());
-                    taskProcessInfo.setStatus(1); //待审批
-                    taskProcessInfo.setReportDate(new Date());
-                    taskProcessInfo.setTaskType(6); //用车审批
-                    taskProcessInfo.setTaskName("【" + SecureUtil.getUserName() + "】向您发起【用车审批】审批");
-                    //上报人
-                    taskProcessInfo.setReportUserId(SecureUtil.getUserId());
 
-                    //审批人
-                    List<String> auditUserIds = new LinkedList<>();
-                    EMProcessTaskUser responsibleObj = dto.getResponsibleUser(); //部门负责人
-                    auditUserIds.add(responsibleObj.getUserId());
-                    EMProcessTaskUser personnelUser = dto.getPersonnelUser(); //人事
-                    auditUserIds.add(personnelUser.getUserId());
-
-                    List<String> nonEmptyAuditUserIds = new LinkedList<>();
-                    for (String userId : auditUserIds) {
-                        if (StringUtils.isNotEmpty(userId)) {
-                            nonEmptyAuditUserIds.add(userId);
-                        }
-                    }
-                    if (nonEmptyAuditUserIds.size() == 0) {
-                        taskProcessInfo.setAuditUserIds(null);
-                    } else {
-                        taskProcessInfo.setAuditUserIds(StringUtils.join(nonEmptyAuditUserIds, ","));
-                    }
-
-                    //抄送人
-                    if (ObjectUtil.isNotEmpty(dto.getCcUserList())) {
-                        List<String> ccUserObjList = dto.getCcUserList().stream().map(EMProcessTaskUser::getUserId).collect(Collectors.toList());
-                        taskProcessInfo.setCcUserIds(StringUtils.join(ccUserObjList, ","));
-                    }
-                    taskProcessService.save(taskProcessInfo);
-
-                    //新增信息
-                    dto.setIsTemp(1); //提交
-                    dto.setStatus(1); //待审批
-                    if (var) {
-                        this.save(dto);
-                    } else {
-                        this.saveOrUpdate(dto);
-                    }
-
-                    //新增审批任务关联信息
-                    jdbcTemplate.execute("delete from c_expense_task_record where task_id = " + taskProcessInfo.getId() + " and expense_info_id = " + dto.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + dto.getId() + ",6)");
+                //新增审批任务
+                TaskProcessInfo taskProcessInfo = new TaskProcessInfo();
+                taskProcessService.buildTaskProcessInfoImpl(6, taskProcessInfo);
 
+                //新增信息
+                dto.setIsTemp(1); //提交
+                dto.setStatus(1); //待审批
+                if (var) {
+                    this.save(dto);
                 } else {
-                    throw new ServiceException("获取当前审批流程人员信息失败,请联系管理员");
+                    this.saveOrUpdate(dto);
                 }
+
+                //新增审批任务关联信息
+                jdbcTemplate.execute("delete from c_expense_task_record where task_id = " + taskProcessInfo.getId() + " and expense_info_id = " + dto.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + dto.getId() + ",6)");
             }
         }
         return true;

+ 37 - 36
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/LogHistoryServiceImpl.java

@@ -304,48 +304,49 @@ public class LogHistoryServiceImpl extends BaseServiceImpl<LogHistoryMapper, Log
         if (ObjectUtil.isEmpty(task.getDeptId())) {
             throw new ServiceException("获取部门信息失败,请联系管理员");
         }
-        //修改计划任务的状态为已完成
-        boolean updated = projectCostBudgetServiceImpl.update(Wrappers.<ProjectCostBudget>lambdaUpdate().set(ProjectCostBudget::getStatus, 4).eq(ProjectCostBudget::getId, taskId));
 
         //获取部门负责人信息
         User departmentHead = taskProcessService.getDepartmentHead(task.getDeptId());
-        if (updated && departmentHead != null) {
-            //新增审批任务
-            TaskProcessInfo taskProcessInfo = new TaskProcessInfo();
-            taskProcessInfo.setId(SnowFlakeUtil.getId());
-            taskProcessInfo.setStatus(1); //待审批
-            taskProcessInfo.setReportDate(new Date());
-            taskProcessInfo.setTaskType(1); //任务审批
-            taskProcessInfo.setTaskName("【" + SecureUtil.getUserName() + "】向您发起【任务审批】审批");
-
-            //上报人
-            taskProcessInfo.setReportUserId(SecureUtil.getUserId());
-
-            //审批人
-            List<String> auditUserIds = new LinkedList<>();
-            EMProcessTaskUser responsibleObj = new EMProcessTaskUser(); //部门负责人
-            responsibleObj.setUserId(departmentHead.getId() + "");
-            responsibleObj.setUserName(departmentHead.getRealName());
-            auditUserIds.add(responsibleObj.getUserId());
-
-            List<String> nonEmptyAuditUserIds = new LinkedList<>();
-            for (String userId : auditUserIds) {
-                if (StringUtils.isNotEmpty(userId)) {
-                    nonEmptyAuditUserIds.add(userId);
+        if (departmentHead != null) {
+            //修改计划任务的状态为已完成
+            boolean updated = projectCostBudgetServiceImpl.update(Wrappers.<ProjectCostBudget>lambdaUpdate().set(ProjectCostBudget::getStatus, 4).eq(ProjectCostBudget::getId, taskId));
+            if (updated) {
+                //新增审批任务
+                TaskProcessInfo taskProcessInfo = new TaskProcessInfo();
+                taskProcessInfo.setId(SnowFlakeUtil.getId());
+                taskProcessInfo.setStatus(1); //待审批
+                taskProcessInfo.setReportDate(new Date());
+                taskProcessInfo.setTaskType(1); //任务审批
+                taskProcessInfo.setTaskName("【" + SecureUtil.getUserName() + "】向您发起【任务审批】审批");
+
+                //上报人
+                taskProcessInfo.setReportUserId(SecureUtil.getUserId());
+
+                //审批人
+                List<String> auditUserIds = new LinkedList<>();
+                EMProcessTaskUser responsibleObj = new EMProcessTaskUser(); //部门负责人
+                responsibleObj.setUserId(departmentHead.getId() + "");
+                responsibleObj.setUserName(departmentHead.getRealName());
+                auditUserIds.add(responsibleObj.getUserId());
+
+                List<String> nonEmptyAuditUserIds = new LinkedList<>();
+                for (String userId : auditUserIds) {
+                    if (StringUtils.isNotEmpty(userId)) {
+                        nonEmptyAuditUserIds.add(userId);
+                    }
+                }
+                if (nonEmptyAuditUserIds.size() == 0) {
+                    taskProcessInfo.setAuditUserIds(null);
+                } else {
+                    taskProcessInfo.setAuditUserIds(StringUtils.join(nonEmptyAuditUserIds, ","));
                 }
-            }
-            if (nonEmptyAuditUserIds.size() == 0) {
-                taskProcessInfo.setAuditUserIds(null);
-            } else {
-                taskProcessInfo.setAuditUserIds(StringUtils.join(nonEmptyAuditUserIds, ","));
-            }
-
-            taskProcessService.save(taskProcessInfo);
 
-            //新增审批任务关联信息
-            jdbcTemplate.execute("delete from c_expense_task_record where task_id = " + taskProcessInfo.getId() + " and expense_info_id = " + task.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + task.getId() + ",1)");
+                taskProcessService.save(taskProcessInfo);
 
-            return true;
+                //新增审批任务关联信息
+                jdbcTemplate.execute("delete from c_expense_task_record where task_id = " + taskProcessInfo.getId() + " and expense_info_id = " + task.getId() + " ; insert into c_expense_task_record(id,task_id,expense_info_id,expense_info_type) values (" + SnowFlakeUtil.getId() + "," + taskProcessInfo.getId() + "," + task.getId() + ",1)");
+                return true;
+            }
         }
         return false;
     }

+ 191 - 17
blade-service/blade-control/src/main/java/org/springblade/control/service/impl/TaskProcessServiceImpl.java

@@ -23,6 +23,7 @@ import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.redis.cache.BladeRedis;
+import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.SecureUtil;
 import org.springblade.core.tool.api.R;
 import org.springblade.core.tool.utils.BeanUtil;
@@ -325,6 +326,16 @@ public class TaskProcessServiceImpl extends BaseServiceImpl<TaskProcessMapper, T
             //已审批人员List
             Set<String> auditUserIdCompleteList = new HashSet<>(Func.toStrList(taskProcessInfo.getAuditUserIdsComplete()));
 
+            //待审批的首位审批人,如果首位审批人还未审批,那么后面人员无法审批
+            if (auditUserIdList.size() > 0) {
+                String firstUserId = auditUserIdList.get(0);
+                if (!firstUserId.equals(SecureUtil.getUserId() + "")) {
+                    User user = iUserClient.userInfoById(Long.parseLong(firstUserId)).getData();
+                    bladeRedis.del("user:id=" + SecureUtil.getUserId());//解锁
+                    throw new ServiceException("当前任务的审批人【" + user.getRealName() + "】还未完成审批流程,请稍后再试");
+                }
+            }
+
             //剔除待审批中当前用户信息
             if (auditUserIdList.removeIf(next -> next != null && next.equals(SecureUtil.getUserId() + ""))) {
                 //剔除后视为已完成审批
@@ -708,23 +719,6 @@ public class TaskProcessServiceImpl extends BaseServiceImpl<TaskProcessMapper, T
         }
     }
 
-    /**
-     * 根据部门id获取部门负责人信息
-     *
-     * @param deptId
-     * @return
-     */
-    public User getDepartmentHead(Long deptId) {
-        if (ObjectUtil.isNotEmpty(deptId)) {
-            //TODO 根据部门id获取部门负责人信息
-            User user = new User();
-            user.setId(SnowFlakeUtil.getId());
-            user.setDeptId("123456789");
-            return user;
-        }
-        return null;
-    }
-
     /**
      * 获取计划任务List
      *
@@ -748,5 +742,185 @@ public class TaskProcessServiceImpl extends BaseServiceImpl<TaskProcessMapper, T
         return null;
     }
 
+    /**
+     * 构造审批任务
+     *
+     * @param type            任务类型
+     * @param taskProcessInfo 任务实体
+     */
+    public void buildTaskProcessInfoImpl(int type, TaskProcessInfo taskProcessInfo) {
+        taskProcessInfo.setId(SnowFlakeUtil.getId());
+        taskProcessInfo.setStatus(1); //待审批
+        taskProcessInfo.setReportDate(new Date());
+        taskProcessInfo.setTaskType(type);
+        String taskNameByType = this.taskNameByType(type);
+        if (StringUtils.isNotEmpty(taskNameByType)) {
+            taskProcessInfo.setTaskName("【" + SecureUtil.getUserName() + "】" + taskNameByType);
+        }
+        //上报人
+        taskProcessInfo.setReportUserId(SecureUtil.getUserId());
+
+        //构造审批人auditUserIds
+        List<String> auditUserIds = new LinkedList<>();
+
+        //判断当前用户是否是部门负责人,如果是,那么不自己审批(跳过)
+        User user = iUserClient.userInfoById(SecureUtil.getUserId()).getData();
+        if (user != null && ObjectUtil.isEmpty(user.getIsLeader())) {
+            //负责人getIsLeader字段=null,证明不是负责人,那么获取当前部门负责人
+            User departmentHead = this.getDepartmentHead(Long.parseLong(SecureUtil.getUser().getDeptId()));
+            auditUserIds.add(departmentHead.getId() + "");
+        }
+
+        //获取审批人信息
+        Map<String, List<User>> approveUserMaps = this.getApproveUserMaps(type);
+
+        //审批人
+        List<User> spUserList = approveUserMaps.get("SP");
+        if (spUserList.size() == 0) {
+            throw new ServiceException("获取当前审批流程人员信息失败,请联系管理员");
+        }
+        auditUserIds.addAll(spUserList.stream().map(User::getId).map(String::valueOf).collect(Collectors.toList()));
+
+        List<String> nonEmptyAuditUserIds = new LinkedList<>();
+        for (String userId : auditUserIds) {
+            if (StringUtils.isNotEmpty(userId)) {
+                nonEmptyAuditUserIds.add(userId);
+            }
+        }
+        if (nonEmptyAuditUserIds.size() == 0) {
+            taskProcessInfo.setAuditUserIds(null);
+        } else {
+            taskProcessInfo.setAuditUserIds(StringUtils.join(nonEmptyAuditUserIds, ","));
+        }
+
+        //抄送人
+        List<User> zcUserList = approveUserMaps.get("ZC");
+        if (zcUserList.size() > 0) {
+            List<String> zcUserIds = zcUserList.stream().map(User::getId).map(String::valueOf).collect(Collectors.toList());
+            taskProcessInfo.setCcUserIds(StringUtils.join(zcUserIds, ","));
+        }
+
+        //入库
+        this.save(taskProcessInfo);
+    }
+
+    /**
+     * 根据任务类型获取任务名称
+     *
+     * @param type
+     * @return
+     */
+    private String taskNameByType(int type) {
+        switch (type) {
+            case 2:
+                return "向您发起【报销审批】审批";
+            case 3:
+                return "向您发起【支付审批】审批";
+            case 4:
+                return "向您发起【借款审批】审批";
+            case 5:
+                return "向您发起【采购审批】审批";
+            case 6:
+                return "向您发起【用车审批】审批";
+            case 7:
+                return "向您发起【发票审批】审批";
+            case 8:
+                return "向您发起【外包支付】审批";
+            case 9:
+                return "向您发起【出差审批】审批";
+        }
+        return "";
+    }
+
+    /**
+     * 根据部门id获取部门负责人信息(一个部门只有一个负责人)
+     *
+     * @param deptId
+     * @return
+     */
+    public User getDepartmentHead(Long deptId) {
+        if (ObjectUtil.isNotEmpty(deptId)) {
+            List<User> leaderUser = jdbcTemplate.query("select * from blade_user where dept_id like '%" + deptId + "%' and is_leader like '%" + deptId + "%'", new BeanPropertyRowMapper<>(User.class));
+            if (leaderUser.size() == 1) {
+                return leaderUser.get(0);
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 根据审批类型获取审批人id信息(不包括部门负责人,单独处理)
+     *
+     * @param type 数据类型
+     * @return
+     */
+    public Map<String, List<User>> getApproveUserMaps(int type) {
+        //tenant_id = 003077(管控平台) dept_type = 3(最底层为岗位信息)
+        List<Dept> deptListControl = jdbcTemplate.query("select * from blade_dept where tenant_id = 003077 and dept_type = 3", new BeanPropertyRowMapper<>(Dept.class));
+        Map<String, List<User>> resultMaps = new LinkedHashMap<>();
+        List<String> spPostIds = new LinkedList<>();
+        List<String> zcPostIds = new LinkedList<>();
+        List<DictInfo> query = new ArrayList<>();
+        switch (type) {
+            case 2://财务报销
+                query = jdbcTemplate.query("select id from c_dict_info where dict_name like '%财务报销%' and type = 6", new BeanPropertyRowMapper<>(DictInfo.class));
+                break;
+            case 3://支付申请
+                query = jdbcTemplate.query("select id from c_dict_info where dict_name like '%支付申请%' and type = 6", new BeanPropertyRowMapper<>(DictInfo.class));
+                break;
+            case 4://借款申请
+                query = jdbcTemplate.query("select id from c_dict_info where dict_name like '%借款申请%' and type = 6", new BeanPropertyRowMapper<>(DictInfo.class));
+                break;
+            case 5://采购申请
+                query = jdbcTemplate.query("select id from c_dict_info where dict_name like '%采购申请%' and type = 6", new BeanPropertyRowMapper<>(DictInfo.class));
+                break;
+            case 6://用车审批
+                query = jdbcTemplate.query("select id from c_dict_info where dict_name like '%用车申请%' and type = 6", new BeanPropertyRowMapper<>(DictInfo.class));
+                break;
+            case 7://发票审批
+                query = jdbcTemplate.query("select id from c_dict_info where dict_name like '%发票管理%' and type = 6", new BeanPropertyRowMapper<>(DictInfo.class));
+                break;
+            case 8://外包支付
+                query = jdbcTemplate.query("select id from c_dict_info where dict_name like '%外包支付%' and type = 6", new BeanPropertyRowMapper<>(DictInfo.class));
+                break;
+            case 9://出差审批
+                query = jdbcTemplate.query("select id from c_dict_info where dict_name like '%出差管理%' and type = 6", new BeanPropertyRowMapper<>(DictInfo.class));
+                break;
+        }
+
+        if (query.size() == 1) {
+            DictInfo dictInfo = query.get(0);
+            List<TaskProcessRecordDictInfo> dictInfoList = jdbcTemplate.query("select * from c_task_process_record_dict_info where dict_id = " + dictInfo.getId(), new BeanPropertyRowMapper<>(TaskProcessRecordDictInfo.class));
+            if (dictInfoList.size() > 0) {
+                List<TaskProcessRecordDictInfo> spRoleInfos = dictInfoList.stream().filter(f -> f.getType().equals(1))
+                        .sorted(Comparator.comparingInt(TaskProcessRecordDictInfo::getSort))
+                        .collect(Collectors.toList());
+                List<TaskProcessRecordDictInfo> zcRoleInfos = dictInfoList.stream().filter(f -> f.getType().equals(2))
+                        .sorted(Comparator.comparingInt(TaskProcessRecordDictInfo::getSort))
+                        .collect(Collectors.toList());
+                for (TaskProcessRecordDictInfo spRoleInfo : spRoleInfos) {
+                    for (Dept dept : deptListControl) {
+                        if (spRoleInfo.getRoleName().equals(dept.getDeptName())) {
+                            spPostIds.add(dept.getId() + "");
+                        }
+                    }
+                }
+                for (TaskProcessRecordDictInfo zcRoleInfo : zcRoleInfos) {
+                    for (Dept dept : deptListControl) {
+                        if (zcRoleInfo.getRoleName().equals(dept.getDeptName())) {
+                            zcPostIds.add(dept.getId() + "");
+                        }
+                    }
+                }
+            }
+        }
+
+        List<User> spUserList = jdbcTemplate.query("select * from blade_user where tenant_id = 003077 and dept_id in(" + StringUtils.join(spPostIds, ",") + ")", new BeanPropertyRowMapper<>(User.class));
+        List<User> zcUserList = jdbcTemplate.query("select * from blade_user where tenant_id = 003077 and dept_id in(" + StringUtils.join(zcPostIds, ",") + ")", new BeanPropertyRowMapper<>(User.class));
+        resultMaps.put("SP", spUserList);
+        resultMaps.put("ZC", zcUserList);
+        return resultMaps;
+    }
+
 
 }

+ 2 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveAutoRuleWbsMapper.java

@@ -47,4 +47,6 @@ public interface ArchiveAutoRuleWbsMapper extends BaseMapper<ArchiveAutoRuleWbs>
 
     int removeArchiveAutoRule(@Param("id") Long id, @Param("time") Date time);
 
+    List<ArchiveAutoRuleWbs> getArchiveAutoRuleWbs(@Param("wbsId") Long wbsId, @Param("projectId") Long projectId);
+
 }

+ 8 - 0
blade-service/blade-manager/src/main/java/org/springblade/manager/mapper/ArchiveAutoRuleWbsMapper.xml

@@ -41,4 +41,12 @@
         where id = #{id}
     </update>
 
+
+
+    <select id="getArchiveAutoRuleWbs" resultMap="archiveAutoRuleWbsResultMap">
+        select *
+        from m_archive_auto_rule_wbs
+        where is_deleted = 0 and wbs_id=#{wbsId} and project_id = #{projectId}
+    </select>
+
 </mapper>

+ 7 - 4
blade-service/blade-manager/src/main/java/org/springblade/manager/service/impl/ArchiveTreeServiceImpl.java

@@ -826,10 +826,13 @@ public class ArchiveTreeServiceImpl extends BaseServiceImpl<ArchiveTreeMapper, A
             ArchiveTree archiveTree = baseMapper.selectById(wbsNode2ArchiveTreeNodeId);
 
             //步骤1:找出wbs的规则设置
-            ArchiveAutoRuleWbs autoRuleWbs = archiveAutoRuleWbsMapper.selectOne(Wrappers.<ArchiveAutoRuleWbs>lambdaQuery()
-                    .eq(ArchiveAutoRuleWbs::getWbsId, id)
-                    .eq(ArchiveAutoRuleWbs::getIsDeleted, 0)
-                    .eq(ArchiveAutoRuleWbs::getProjectId, projectId));
+            ArchiveAutoRuleWbs  autoRuleWbs=null;
+            List<ArchiveAutoRuleWbs> autoRuleWbsList = archiveAutoRuleWbsMapper.getArchiveAutoRuleWbs(id, projectId);
+            if(autoRuleWbsList.size()==0){
+                //TODO 像上级找
+            }else{
+                autoRuleWbs=autoRuleWbsList.get(0);
+            }
 
             if (autoRuleWbs != null) {
                 Integer archiveAutoType = autoRuleWbs.getArchiveAutoType();

+ 5 - 1
blade-service/blade-system/src/main/java/org/springblade/system/controller/DeptController.java

@@ -33,6 +33,7 @@ import org.springblade.core.tool.constant.BladeConstant;
 import org.springblade.core.tool.constant.RoleConstant;
 import org.springblade.core.tool.support.Kv;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.StringUtil;
 import org.springblade.system.cache.DictCache;
 import org.springblade.system.entity.Dept;
 import org.springblade.system.enums.DictEnum;
@@ -138,7 +139,10 @@ public class DeptController extends BladeController {
     @PostMapping("/submit")
     @ApiOperationSupport(order = 6)
     @ApiOperation(value = "新增或修改", notes = "传入dept")
-    public R submit(@Valid @RequestBody Dept dept) {
+    public R submit(@Valid @RequestBody Dept dept, BladeUser bladeUser) {
+        if (StringUtil.isBlank(dept.getTenantId())) {
+            dept.setTenantId(bladeUser.getTenantId());
+        }
         if (deptService.submit(dept)) {
             CacheUtil.clear(SYS_CACHE);
             // 返回懒加载树更新节点所需字段

+ 5 - 0
blade-service/blade-system/src/main/java/org/springblade/system/service/impl/DeptServiceImpl.java

@@ -149,7 +149,12 @@ public class DeptServiceImpl extends ServiceImpl<DeptMapper, Dept> implements ID
             dept.setTenantId(parent.getTenantId());
             String ancestors = parent.getAncestors() + StringPool.COMMA + dept.getParentId();
             dept.setAncestors(ancestors);
+        } else {
+            dept.setTenantId(AuthUtil.getTenantId());
+            dept.setParentId(BladeConstant.TOP_PARENT_ID);
+            dept.setAncestors(String.valueOf(BladeConstant.TOP_PARENT_ID));
         }
+
         dept.setIsDeleted(BladeConstant.DB_NOT_DELETED);
         return saveOrUpdate(dept);
     }

+ 55 - 1
blade-service/blade-user/src/main/java/org/springblade/system/user/controller/UserController.java

@@ -60,6 +60,7 @@ import org.springblade.system.user.excel.UserExcel2;
 import org.springblade.system.user.excel.UserImporter;
 import org.springblade.system.user.service.IUserService;
 import org.springblade.system.user.util.AesInfoUtil;
+import org.springblade.system.user.vo.DeptUserVO;
 import org.springblade.system.user.vo.UserVO;
 import org.springblade.system.user.wrapper.UserWrapper;
 import org.springframework.jdbc.core.JdbcTemplate;
@@ -164,6 +165,33 @@ public class UserController {
     @PreAuth(RoleConstant.HAS_ROLE_ADMIN)
     public R submit(@Valid @RequestBody UserDTO user) {
         CacheUtil.clear(USER_CACHE);
+        // 内控系统拆分
+        List<DeptUserVO> deptList = user.getDeptList();
+        if (deptList != null && deptList.size() >= 1) {
+            String deptId = "";
+            String postId = "";
+            String isLaderpostId = "";
+            for (int i = 0; i < deptList.size(); i++) {
+                DeptUserVO deptUserVO = deptList.get(i);
+                if (i == 0) {
+                    deptId += deptUserVO.getDeptId() + "";
+                    postId += deptUserVO.getPostId() + "";
+                    if (deptUserVO.getIsLeader() == 1) {
+                        isLaderpostId = deptUserVO.getDeptId() + "";
+                    }
+                } else {
+                    deptId += "," + deptUserVO.getDeptId();
+                    postId += "," + deptUserVO.getPostId() + ",";
+                    if (deptUserVO.getIsLeader() == 1) {
+                        isLaderpostId = "," + deptUserVO.getDeptId();
+                    }
+                }
+            }
+            user.setPostId(postId);
+            user.setDeptId(deptId);
+        }
+
+
         return R.status(userService.submit(user));
     }
 
@@ -185,8 +213,34 @@ public class UserController {
     @PostMapping("/update")
     @ApiOperationSupport(order = 5)
     @ApiOperation(value = "修改", notes = "传入User")
-    public R update(@Valid @RequestBody User user) {
+    public R update(@Valid @RequestBody UserDTO user) {
         CacheUtil.clear(USER_CACHE);
+        // 内控系统拆分
+        List<DeptUserVO> deptList = user.getDeptList();
+        if (deptList != null && deptList.size() >= 1) {
+            String deptId = "";
+            String postId = "";
+            String isLaderpostId = "";
+            for (int i = 0; i < deptList.size(); i++) {
+                DeptUserVO deptUserVO = deptList.get(i);
+                if (i == 0) {
+                    deptId += deptUserVO.getDeptId() + "";
+                    postId += deptUserVO.getPostId() + "";
+                    if (deptUserVO.getIsLeader() == 1) {
+                        isLaderpostId = deptUserVO.getDeptId() + "";
+                    }
+                } else {
+                    deptId += "," + deptUserVO.getDeptId();
+                    postId += "," + deptUserVO.getPostId() + ",";
+                    if (deptUserVO.getIsLeader() == 1) {
+                        isLaderpostId = "," + deptUserVO.getDeptId();
+                    }
+                }
+            }
+            user.setIsLeader(isLaderpostId);
+            user.setPostId(postId);
+            user.setDeptId(deptId);
+        }
         return R.status(userService.updateUser(user));
     }
 

+ 2 - 0
blade-service/blade-user/src/main/java/org/springblade/system/user/mapper/UserMapper.xml

@@ -32,6 +32,8 @@
         <result column="acc_code" property="accCode"/>
         <result column="sys_id" property="sysId"/>
         <result column="sys_type" property="sysType"/>
+        <result column="is_lader" property="isLeader"/>
+        <result column="one_money" property="oneMoney"/>
     </resultMap>
     <update id="updateRoleIdById">
         UPDATE blade_user

+ 2 - 1
blade-service/blade-user/src/main/java/org/springblade/system/user/service/impl/UserServiceImpl.java

@@ -32,6 +32,7 @@ import org.springblade.core.log.exception.ServiceException;
 import org.springblade.core.mp.base.BaseServiceImpl;
 import org.springblade.core.mp.support.Condition;
 import org.springblade.core.mp.support.Query;
+import org.springblade.core.secure.BladeUser;
 import org.springblade.core.secure.utils.AuthUtil;
 import org.springblade.core.tenant.BladeTenantProperties;
 import org.springblade.core.tool.api.R;
@@ -118,7 +119,6 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
         if (userCount > 0L && Func.isEmpty(user.getId())) {
             throw new ServiceException(StringUtil.format("当前用户 [{}] 已存在!", user.getAccount()));
         }
-
         return save(user) && submitUserDept(user);
     }
 
@@ -171,6 +171,7 @@ public class UserServiceImpl extends BaseServiceImpl<UserMapper, User> implement
         //user.setUserType(1); //用户平台-WEB
         user.setName(user.getRealName());
         boolean b1 = save(user);
+
         if (b1) {
             //绑定用户与部门关系
             boolean b = submitUserDept(user);

+ 5 - 2
blade-service/blade-user/src/main/java/org/springblade/system/user/wrapper/UserWrapper.java

@@ -19,6 +19,7 @@ package org.springblade.system.user.wrapper;
 import org.springblade.core.mp.support.BaseEntityWrapper;
 import org.springblade.core.tool.utils.BeanUtil;
 import org.springblade.core.tool.utils.Func;
+import org.springblade.core.tool.utils.ObjectUtil;
 import org.springblade.system.cache.DictCache;
 import org.springblade.system.cache.SysCache;
 import org.springblade.system.entity.Tenant;
@@ -52,8 +53,10 @@ public class UserWrapper extends BaseEntityWrapper<User, UserVO> {
         userVO.setDeptName(Func.join(deptName));
         userVO.setPostName(Func.join(postName));
         userVO.setSexName(DictCache.getValue(DictEnum.SEX, user.getSex()));
-        String value = DictCache.getValue(DictEnum.USER_TYPE, user.getUserType()).replace("[", "").replace("]", "");
-        userVO.setUserTypeName(value);
+        if (ObjectUtil.isNotEmpty(user.getUserType())) {
+            String value = DictCache.getValue(DictEnum.USER_TYPE, user.getUserType()).replace("[", "").replace("]", "");
+            userVO.setUserTypeName(value);
+        }
         return userVO;
     }