|
|
|
@ -8,10 +8,7 @@ import com.dreamchaser.depository_manage.config.QyWxJMJM.com.qq.weixin.mp.aes.WX |
|
|
|
import com.dreamchaser.depository_manage.entity.CallBackLog; |
|
|
|
import com.dreamchaser.depository_manage.entity.UserByPort; |
|
|
|
import com.dreamchaser.depository_manage.pojo.RestResponse; |
|
|
|
import com.dreamchaser.depository_manage.pojo.callBackXml.approvalCallBackXml.ApprovalCallBackInfo; |
|
|
|
import com.dreamchaser.depository_manage.pojo.callBackXml.approvalCallBackXml.ApprovalInfo; |
|
|
|
import com.dreamchaser.depository_manage.pojo.callBackXml.approvalCallBackXml.ApprovalInfo_Details; |
|
|
|
import com.dreamchaser.depository_manage.pojo.callBackXml.approvalCallBackXml.ApprovalInfo_SpRecord; |
|
|
|
import com.dreamchaser.depository_manage.pojo.callBackXml.approvalCallBackXml.*; |
|
|
|
import com.dreamchaser.depository_manage.pojo.callBackXml.callBackXml_button_templatecard.TemplateCard; |
|
|
|
import com.dreamchaser.depository_manage.security.pool.AuthenticationTokenPool; |
|
|
|
import com.dreamchaser.depository_manage.security.pool.UserKeyAndTokenPool; |
|
|
|
@ -532,19 +529,23 @@ public class QyWxOperationController { |
|
|
|
ApprovalInfo_Details approvalInfo_details = null; |
|
|
|
// 定义当前流程审批时间
|
|
|
|
String as_SpTime = ""; |
|
|
|
// 定义当前审批流程是是否为第一个节点
|
|
|
|
boolean flagForFirst = spRecord_list.size() > 1; // 当审批节点大于1时默认是第一个
|
|
|
|
// 定义当前审批流程是是否要通过仓储中心
|
|
|
|
boolean flagForFirst = true; // 默认通过
|
|
|
|
|
|
|
|
// 设置当前审批是否为仓库管理员(1为部门负责人,2为仓储中心,3为仓库管理员)
|
|
|
|
int flagForDepository = 1; // 默认为部门负责人
|
|
|
|
|
|
|
|
// 定义已完成审批的节点数
|
|
|
|
int approval_count = 0; |
|
|
|
|
|
|
|
// 获取审批申请状态变化类型:1-提单;2-同意;3-驳回;4-转审;5-催办;6-撤销;8-通过后撤销;10-添加备注
|
|
|
|
String spStatus = approvalInfo.getStatuChangeEvent(); |
|
|
|
|
|
|
|
for (ApprovalInfo_SpRecord approvalInfo_SpRecord : spRecord_list) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 获取当前审批节点详情。当节点为标签或上级时,一个节点可能有多个分支
|
|
|
|
List<ApprovalInfo_Details> details = approvalInfo_SpRecord.getDetails(); |
|
|
|
|
|
|
|
// 定义审批操作时间
|
|
|
|
String spTime = ""; |
|
|
|
// 定义审批操作状态
|
|
|
|
@ -552,17 +553,20 @@ public class QyWxOperationController { |
|
|
|
// 定义审批详情
|
|
|
|
ApprovalInfo_Details ap_detail = null; |
|
|
|
|
|
|
|
|
|
|
|
for (ApprovalInfo_Details ad : details) { |
|
|
|
|
|
|
|
// 获取节点分支审批人审批操作时间,0为尚未操作
|
|
|
|
spTime = ad.getSpTime(); |
|
|
|
// 如果当前审批人暂未处理
|
|
|
|
|
|
|
|
// 如果当前审批节点已经处理
|
|
|
|
if (!("0".equals(spTime))) { |
|
|
|
|
|
|
|
// 设置当前处理的详情
|
|
|
|
ap_detail = ad; |
|
|
|
// 设置当前审批的状态
|
|
|
|
ad_SpStatus = ad.getSpStatus(); |
|
|
|
// 已审批节点数+1
|
|
|
|
approval_count++; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
@ -601,6 +605,49 @@ public class QyWxOperationController { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// 获取第二个节点数据
|
|
|
|
ApprovalInfo_SpRecord approvalInfo_spRecord = spRecord_list.get(1); |
|
|
|
// 获取第二个节点中审批人信息
|
|
|
|
List<ApprovalInfo_Details> details = approvalInfo_spRecord.getDetails(); |
|
|
|
// 获取仓储中心负责人标签下的成员
|
|
|
|
List<String> qyWxLabelUserList = QyWxConfig.getQyWxLabelUserList(crypt); |
|
|
|
// 定义当前是否为标签
|
|
|
|
boolean flagForLabel = true; // 默认为标签
|
|
|
|
if (details.size() != qyWxLabelUserList.size()) { |
|
|
|
// 如果节点数目不等于标签人员数
|
|
|
|
flagForLabel = false; |
|
|
|
} else { |
|
|
|
for (ApprovalInfo_Details ad : details |
|
|
|
) { |
|
|
|
// 获取当前节点审批人userId
|
|
|
|
String approver = ad.getApprover().getUserId(); |
|
|
|
flagForLabel = flagForLabel && qyWxLabelUserList.contains(approver); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (!flagForLabel) { |
|
|
|
// 如果第二个节点不是标签节点
|
|
|
|
if(approval_count > 1){ |
|
|
|
// 如果完成审批的节点数大于1
|
|
|
|
flagForDepository = 3; |
|
|
|
}else{ |
|
|
|
// 如果当前是第一个节点
|
|
|
|
flagForFirst = false; |
|
|
|
} |
|
|
|
|
|
|
|
} else { |
|
|
|
// 如果第二个节点是标签节点
|
|
|
|
if(approval_count > 2){ |
|
|
|
// 如果完成审批的节点数大于2
|
|
|
|
flagForDepository = 3; |
|
|
|
}else{ |
|
|
|
// 如果当前并不是标签节点后
|
|
|
|
flagForDepository = 2; |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
// 1-审批中;2-已同意;3-已驳回;4-已转审
|
|
|
|
if (!("1".equals(spStatus))) { |
|
|
|
|
|
|
|
@ -611,10 +658,11 @@ public class QyWxOperationController { |
|
|
|
// 开启一个线程用于进行处理
|
|
|
|
ApprovalInfo_Details finalApprovalInfo_details = approvalInfo_details; |
|
|
|
boolean finalFlagForFirst = flagForFirst; |
|
|
|
int finalFlagForDepository = flagForDepository; |
|
|
|
new Thread(new Runnable() { |
|
|
|
@Override |
|
|
|
public void run() { |
|
|
|
depositoryRecordService.reviewByQyWxApproval(mainId, finalApprovalInfo_details, crypt, spStatus, approvalInfo.getSpNo(), finalFlagForFirst); |
|
|
|
depositoryRecordService.reviewByQyWxApproval(mainId, finalApprovalInfo_details, crypt, spStatus, approvalInfo.getSpNo(), finalFlagForFirst, finalFlagForDepository); |
|
|
|
} |
|
|
|
}).start(); |
|
|
|
|
|
|
|
|