工匠学院人员对接功能完善
parent
6d9a283acc
commit
213d2fa16f
|
@ -0,0 +1,126 @@
|
||||||
|
package com.zcloud.flow.util;
|
||||||
|
|
||||||
|
import com.zcloud.util.Base64Utils;
|
||||||
|
|
||||||
|
import javax.crypto.Cipher;
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.security.Key;
|
||||||
|
import java.security.KeyFactory;
|
||||||
|
import java.security.spec.KeySpec;
|
||||||
|
import java.security.spec.PKCS8EncodedKeySpec;
|
||||||
|
import java.security.spec.X509EncodedKeySpec;
|
||||||
|
|
||||||
|
public class GJRSAUtils {
|
||||||
|
private static final String CRYPTO_METHOD = "RSA";
|
||||||
|
private static final String CYPHER = "RSA/ECB/PKCS1Padding";
|
||||||
|
private static final String CHARSET = "UTF-8";
|
||||||
|
|
||||||
|
private GJRSAUtils() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String encrypt(String clearText, String pubKey) {
|
||||||
|
String encryptedBase64 = "";
|
||||||
|
ByteArrayOutputStream out = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
byte[] bs = clearText.getBytes(CHARSET);
|
||||||
|
out = new ByteArrayOutputStream();
|
||||||
|
int LEN = 128;
|
||||||
|
byte[] tmp = new byte[LEN];
|
||||||
|
int length = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < bs.length; ++i) {
|
||||||
|
if (length == LEN) {
|
||||||
|
byte[] bb = encrypt(tmp, 0, length, pubKey);
|
||||||
|
out.write(bb);
|
||||||
|
tmp = new byte[LEN];
|
||||||
|
length = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
tmp[length] = bs[i];
|
||||||
|
++length;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (length > 0) {
|
||||||
|
byte[] bb = encrypt(tmp, 0, length, pubKey);
|
||||||
|
out.write(bb);
|
||||||
|
}
|
||||||
|
|
||||||
|
encryptedBase64 = new String(Base64Utils.encode(out.toByteArray()));
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} finally {
|
||||||
|
if (out != null) {
|
||||||
|
try {
|
||||||
|
out.close();
|
||||||
|
} catch (Exception ignore) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return encryptedBase64.replaceAll("(\\r|\\n)", "");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String decrypt(String encryptedBase64, String privateKey) {
|
||||||
|
String decryptedString = "";
|
||||||
|
ByteArrayOutputStream out = null;
|
||||||
|
|
||||||
|
try {
|
||||||
|
byte[] encryptedBytes = Base64Utils.decode(encryptedBase64);
|
||||||
|
out = new ByteArrayOutputStream();
|
||||||
|
int LEN = 256;
|
||||||
|
byte[] tmp = new byte[LEN];
|
||||||
|
int length = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < encryptedBytes.length; ++i) {
|
||||||
|
if (length == LEN) {
|
||||||
|
byte[] bb = decrypt(tmp, 0, length, privateKey);
|
||||||
|
out.write(bb);
|
||||||
|
tmp = new byte[LEN];
|
||||||
|
length = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
tmp[length] = encryptedBytes[i];
|
||||||
|
++length;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (length > 0) {
|
||||||
|
byte[] bb = decrypt(tmp, 0, length, privateKey);
|
||||||
|
out.write(bb);
|
||||||
|
}
|
||||||
|
|
||||||
|
decryptedString = new String(out.toByteArray(), CHARSET);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} finally {
|
||||||
|
if (out != null) {
|
||||||
|
try {
|
||||||
|
out.close();
|
||||||
|
} catch (Exception ignore) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return decryptedString;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static byte[] encrypt(byte[] bs, int index, int length, String pub_key) throws Exception {
|
||||||
|
KeyFactory keyFac = KeyFactory.getInstance(CRYPTO_METHOD);
|
||||||
|
KeySpec keySpec = new X509EncodedKeySpec(Base64Utils.decode(pub_key.trim()));
|
||||||
|
Key key = keyFac.generatePublic(keySpec);
|
||||||
|
Cipher cipher = Cipher.getInstance(CYPHER);
|
||||||
|
cipher.init(1, key);
|
||||||
|
return cipher.doFinal(bs, index, length);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static byte[] decrypt(byte[] encryptedBytes, int index, int length, String private_key) throws Exception {
|
||||||
|
KeyFactory keyFac = KeyFactory.getInstance(CRYPTO_METHOD);
|
||||||
|
KeySpec keySpec = new PKCS8EncodedKeySpec(Base64Utils.decode(private_key.trim()));
|
||||||
|
Key key = keyFac.generatePrivate(keySpec);
|
||||||
|
Cipher cipher = Cipher.getInstance(CYPHER);
|
||||||
|
cipher.init(2, key);
|
||||||
|
return cipher.doFinal(encryptedBytes, index, length);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,54 @@
|
||||||
|
package com.zcloud.flow.util;
|
||||||
|
|
||||||
|
import java.nio.charset.StandardCharsets;
|
||||||
|
import java.security.MessageDigest;
|
||||||
|
|
||||||
|
public class GJSHAUtils {
|
||||||
|
private static final String[] HEX_DIGITS = new String[]{"0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"};
|
||||||
|
|
||||||
|
private GJSHAUtils() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String sha256(String text) {
|
||||||
|
try {
|
||||||
|
MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
|
||||||
|
byte[] bytes = text.getBytes(StandardCharsets.UTF_8);
|
||||||
|
messageDigest.update(bytes);
|
||||||
|
return byteArrayToHexString(messageDigest.digest());
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String sha256(byte[] bytes) {
|
||||||
|
try {
|
||||||
|
MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
|
||||||
|
messageDigest.update(bytes);
|
||||||
|
return byteArrayToHexString(messageDigest.digest());
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String byteArrayToHexString(byte[] bytes) {
|
||||||
|
StringBuilder stringBuilder = new StringBuilder();
|
||||||
|
int bytesLen = bytes.length;
|
||||||
|
for (int i = 0; i < bytesLen; ++i) {
|
||||||
|
byte tem = bytes[i];
|
||||||
|
stringBuilder.append(byteToHexString(tem));
|
||||||
|
}
|
||||||
|
return stringBuilder.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static String byteToHexString(byte b) {
|
||||||
|
int n = b;
|
||||||
|
if (b < 0) {
|
||||||
|
n = 256 + b;
|
||||||
|
}
|
||||||
|
int d1 = n / 16;
|
||||||
|
int d2 = n % 16;
|
||||||
|
return HEX_DIGITS[d1] + HEX_DIGITS[d2];
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,139 @@
|
||||||
|
package com.zcloud.flow.util;
|
||||||
|
|
||||||
|
import cn.hutool.core.util.RandomUtil;
|
||||||
|
import cn.hutool.http.HttpResponse;
|
||||||
|
import cn.hutool.http.HttpUtil;
|
||||||
|
import com.alibaba.fastjson.JSON;
|
||||||
|
import com.zcloud.flow.util.dto.UserDTO;
|
||||||
|
import lombok.extern.apachecommons.CommonsLog;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
|
||||||
|
import java.util.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工匠学院
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Component
|
||||||
|
public class SendMessageUtil {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工匠学苑 服务地址(测试环境)
|
||||||
|
**/
|
||||||
|
@Value("${gongJiangXueYuanTestUrl}")
|
||||||
|
public static String SERVER_URL_TEST;
|
||||||
|
/**
|
||||||
|
* 工匠学苑 服务地址(生产环境)
|
||||||
|
**/
|
||||||
|
@Value("${gongJiangXueYuanProdUrl}")
|
||||||
|
public static String SERVER_URL_PROD;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 工匠学苑 RSA公钥
|
||||||
|
**/
|
||||||
|
@Value("${gongJiangXueYuanSendPublicKey}")
|
||||||
|
public static String RSA_PUBLIC_KEY;
|
||||||
|
/**
|
||||||
|
* 系统对接密钥
|
||||||
|
**/
|
||||||
|
@Value("${gongJiangXueYuanSendPrivateKey}")
|
||||||
|
public static final String SECRET_KEY = "58e5e358b220335e7b1c6cc3576ceecc28b4a95d96cbbe0";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 签名 header
|
||||||
|
**/
|
||||||
|
public static final String SIGN_HEADER = "gjxy-sign";
|
||||||
|
/**
|
||||||
|
* 随机字符串 header
|
||||||
|
**/
|
||||||
|
public static final String NONCE_HEADER = "gjxy-nonce";
|
||||||
|
/**
|
||||||
|
* 时间戳 header
|
||||||
|
**/
|
||||||
|
public static final String TIMESTAMP_HEADER = "gjxy-timestamp";
|
||||||
|
|
||||||
|
public void sendMessage(List<UserDTO> users) throws Exception {
|
||||||
|
for (UserDTO user : users) {
|
||||||
|
Map<String, Object> paramDataMap = new HashMap<>();
|
||||||
|
paramDataMap.put("userList", user);
|
||||||
|
// 发起请求
|
||||||
|
String body = createPostFormHttpRequest("/API-BACKEND/openapi/user/v1/syncNotify", paramDataMap);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* post请求
|
||||||
|
*
|
||||||
|
* @param uri 接口地址
|
||||||
|
* @param paramDataMap 请求参数(明文)
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
public static String createPostFormHttpRequest(String uri, Map<String, Object> paramDataMap) throws Exception {
|
||||||
|
// 参数RSA加密
|
||||||
|
String paramDataJsonStr = JSON.toJSONString(paramDataMap);
|
||||||
|
String paramDataRsaEncrypt = GJRSAUtils.encrypt(paramDataJsonStr, RSA_PUBLIC_KEY);
|
||||||
|
|
||||||
|
// 请求参数
|
||||||
|
Map<String, Object> paramMap = new HashMap<>();
|
||||||
|
paramMap.put("param", paramDataRsaEncrypt);
|
||||||
|
|
||||||
|
// 时间戳
|
||||||
|
String timestamp = String.valueOf(System.currentTimeMillis());
|
||||||
|
// 随机字符串
|
||||||
|
String nonce = RandomUtil.randomString(16);
|
||||||
|
// 签名
|
||||||
|
String sign = signBySHA256(SECRET_KEY, nonce, timestamp, paramMap);
|
||||||
|
Map<String, Object> lmap = new HashMap<>();
|
||||||
|
lmap.put("param", paramDataMap);
|
||||||
|
HttpResponse response = HttpUtil.createPost(SERVER_URL_TEST + uri)
|
||||||
|
.header(NONCE_HEADER, nonce)
|
||||||
|
.header(SIGN_HEADER, sign)
|
||||||
|
.header(TIMESTAMP_HEADER, timestamp)
|
||||||
|
.form("param", paramDataRsaEncrypt)
|
||||||
|
.execute();
|
||||||
|
return response.body();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 构建签名
|
||||||
|
*
|
||||||
|
* @param secretKey 对接密钥
|
||||||
|
* @param nonce 随机字符串
|
||||||
|
* @param timestamp 时间戳
|
||||||
|
* @param paramMap 请求参数(明文)
|
||||||
|
* @return String
|
||||||
|
*/
|
||||||
|
private static String signBySHA256(String secretKey, String nonce, String timestamp, Map<String, Object> paramMap) {
|
||||||
|
try {
|
||||||
|
// 参数名排序
|
||||||
|
List<String> paramNames = new ArrayList<>(paramMap.keySet());
|
||||||
|
Collections.sort(paramNames);
|
||||||
|
StringBuilder result = new StringBuilder();
|
||||||
|
// 拼接参数字符串
|
||||||
|
for (String paramName : paramNames) {
|
||||||
|
if (result.length() > 1) {
|
||||||
|
result.append("|");
|
||||||
|
}
|
||||||
|
if (paramName != null && paramName.length() > 0) {
|
||||||
|
String value;
|
||||||
|
if (paramMap.get(paramName) == null) {
|
||||||
|
value = "";
|
||||||
|
} else {
|
||||||
|
value = paramMap.get(paramName).toString();
|
||||||
|
if (value.length() > 4096) {
|
||||||
|
value = value.substring(0, 4096);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
result.append(paramName).append("=").append(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
result.append(":").append(nonce).append(":").append(secretKey).append("&").append(timestamp);
|
||||||
|
return GJSHAUtils.sha256(result.toString());
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,38 @@
|
||||||
|
package com.zcloud.flow.util.dto;
|
||||||
|
|
||||||
|
import lombok.Builder;
|
||||||
|
import lombok.Data;
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@Builder
|
||||||
|
public class UserDTO {
|
||||||
|
/**
|
||||||
|
* 用户名
|
||||||
|
*/
|
||||||
|
private String userName;
|
||||||
|
/**
|
||||||
|
* 姓名
|
||||||
|
*/
|
||||||
|
private String realName;
|
||||||
|
/**
|
||||||
|
* 性别
|
||||||
|
*/
|
||||||
|
private String userSex;
|
||||||
|
/**
|
||||||
|
* 身份证号码
|
||||||
|
*/
|
||||||
|
private String idCard;
|
||||||
|
/**
|
||||||
|
* 组织树(所属企业/部门)
|
||||||
|
* 示例:河北XXX总公司/河北XXX分公司/XXX部门
|
||||||
|
*/
|
||||||
|
private String orgTree;
|
||||||
|
/**
|
||||||
|
* 免冠照片url地址
|
||||||
|
*/
|
||||||
|
private String avatarUrl;
|
||||||
|
/**
|
||||||
|
* 手机号码
|
||||||
|
*/
|
||||||
|
private String phoneNumber;
|
||||||
|
}
|
|
@ -3,7 +3,10 @@ package com.zcloud.flow.xgf.GuFen;
|
||||||
import com.yomahub.liteflow.annotation.LiteflowComponent;
|
import com.yomahub.liteflow.annotation.LiteflowComponent;
|
||||||
import com.yomahub.liteflow.core.NodeComponent;
|
import com.yomahub.liteflow.core.NodeComponent;
|
||||||
import com.zcloud.entity.PageData;
|
import com.zcloud.entity.PageData;
|
||||||
|
import com.zcloud.flow.util.SendMessageUtil;
|
||||||
|
import com.zcloud.flow.util.dto.UserDTO;
|
||||||
import com.zcloud.mapper.datasource.xgf.XgfFlowsMapper;
|
import com.zcloud.mapper.datasource.xgf.XgfFlowsMapper;
|
||||||
|
import com.zcloud.mapper.datasource.xgf.XgfUserDetailsMapper;
|
||||||
import com.zcloud.mapper.datasource.xgf.XgfUserMapper;
|
import com.zcloud.mapper.datasource.xgf.XgfUserMapper;
|
||||||
import com.zcloud.service.xgf.XgfUserService;
|
import com.zcloud.service.xgf.XgfUserService;
|
||||||
import com.zcloud.util.DateUtil;
|
import com.zcloud.util.DateUtil;
|
||||||
|
@ -11,6 +14,8 @@ import com.zcloud.flow.xgf.util.XgfFlowDto;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@LiteflowComponent("GuFenSupervise")
|
@LiteflowComponent("GuFenSupervise")
|
||||||
@SuppressWarnings("all")
|
@SuppressWarnings("all")
|
||||||
|
@ -25,6 +30,11 @@ public class GuFenSupervise extends NodeComponent {
|
||||||
@Resource
|
@Resource
|
||||||
private XgfUserMapper xgfUserMapper;
|
private XgfUserMapper xgfUserMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private XgfUserDetailsMapper xgfUserDetailsMapper;
|
||||||
|
@Resource
|
||||||
|
private SendMessageUtil sendMessageUtil;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAccess() {
|
public boolean isAccess() {
|
||||||
XgfFlowDto info = this.getRequestData();
|
XgfFlowDto info = this.getRequestData();
|
||||||
|
@ -85,6 +95,22 @@ public class GuFenSupervise extends NodeComponent {
|
||||||
entity.put("STATUS", "2");
|
entity.put("STATUS", "2");
|
||||||
xgfUserMapper.edit(entity);
|
xgfUserMapper.edit(entity);
|
||||||
|
|
||||||
|
// created by liu jun 2024-06-26 工匠学院对接
|
||||||
|
condition.clear();
|
||||||
|
condition.put("XGF_USER_ID", flows.getString("FLOWS_ID"));
|
||||||
|
PageData entityInfo = xgfUserDetailsMapper.findById(condition);
|
||||||
|
UserDTO userDTO = UserDTO.builder()
|
||||||
|
.userName(entity.getString("USERNAME"))
|
||||||
|
.realName(entity.getString("NAME"))
|
||||||
|
.userSex("0".equals(entityInfo.getString("SEX")) ? "男" : "女")
|
||||||
|
.phoneNumber(entity.getString("USERNAME"))
|
||||||
|
.idCard(entityInfo.getString("CARD_ID"))
|
||||||
|
.orgTree("集团外公司(含外协单位)/"+ entity.getString("BELONG_TO_CORP_NAME"))
|
||||||
|
.avatarUrl(entityInfo.getString("PHOTO"))
|
||||||
|
.build();
|
||||||
|
List<UserDTO> list = new ArrayList<UserDTO>();
|
||||||
|
list.add(userDTO);
|
||||||
|
sendMessageUtil.sendMessage(list);
|
||||||
// 保存操作记录
|
// 保存操作记录
|
||||||
xgfUserService.saveLog(info, info.getSTATUS(), "1");
|
xgfUserService.saveLog(info, info.getSTATUS(), "1");
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,8 +3,11 @@ package com.zcloud.flow.xgf.GuFen;
|
||||||
import com.yomahub.liteflow.annotation.LiteflowComponent;
|
import com.yomahub.liteflow.annotation.LiteflowComponent;
|
||||||
import com.yomahub.liteflow.core.NodeComponent;
|
import com.yomahub.liteflow.core.NodeComponent;
|
||||||
import com.zcloud.entity.PageData;
|
import com.zcloud.entity.PageData;
|
||||||
|
import com.zcloud.flow.util.SendMessageUtil;
|
||||||
|
import com.zcloud.flow.util.dto.UserDTO;
|
||||||
import com.zcloud.mapper.datasource.bus.CorpInfoMapper;
|
import com.zcloud.mapper.datasource.bus.CorpInfoMapper;
|
||||||
import com.zcloud.mapper.datasource.xgf.XgfFlowsMapper;
|
import com.zcloud.mapper.datasource.xgf.XgfFlowsMapper;
|
||||||
|
import com.zcloud.mapper.datasource.xgf.XgfUserDetailsMapper;
|
||||||
import com.zcloud.mapper.datasource.xgf.XgfUserMapper;
|
import com.zcloud.mapper.datasource.xgf.XgfUserMapper;
|
||||||
import com.zcloud.service.xgf.XgfUserService;
|
import com.zcloud.service.xgf.XgfUserService;
|
||||||
import com.zcloud.util.DateUtil;
|
import com.zcloud.util.DateUtil;
|
||||||
|
@ -13,6 +16,8 @@ import com.zcloud.flow.xgf.util.XgfFlowDto;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@LiteflowComponent("GuFenWeiTuoSupervise")
|
@LiteflowComponent("GuFenWeiTuoSupervise")
|
||||||
@SuppressWarnings("all")
|
@SuppressWarnings("all")
|
||||||
|
@ -30,9 +35,13 @@ public class GuFenWeiTuoSupervise extends NodeComponent {
|
||||||
@Resource
|
@Resource
|
||||||
private CorpInfoMapper corpInfoMapper;
|
private CorpInfoMapper corpInfoMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private XgfUserDetailsMapper xgfUserDetailsMapper;
|
||||||
|
@Resource
|
||||||
|
private SendMessageUtil sendMessageUtil;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAccess() {
|
public boolean isAccess() {
|
||||||
System.out.println("2???????");
|
|
||||||
XgfFlowDto info = this.getRequestData();
|
XgfFlowDto info = this.getRequestData();
|
||||||
// 如果指针没有数据,赋值后自动结束
|
// 如果指针没有数据,赋值后自动结束
|
||||||
if (StringUtils.isBlank(info.getIterator())) {
|
if (StringUtils.isBlank(info.getIterator())) {
|
||||||
|
@ -87,6 +96,23 @@ public class GuFenWeiTuoSupervise extends NodeComponent {
|
||||||
entity.put("CHECK_STEP", Integer.parseInt(entity.get("CHECK_STEP").toString()) + 1);
|
entity.put("CHECK_STEP", Integer.parseInt(entity.get("CHECK_STEP").toString()) + 1);
|
||||||
xgfUserMapper.edit(entity);
|
xgfUserMapper.edit(entity);
|
||||||
|
|
||||||
|
// created by liu jun 2024-06-26 工匠学院对接
|
||||||
|
condition.clear();
|
||||||
|
condition.put("XGF_USER_ID", flows.getString("FLOWS_ID"));
|
||||||
|
PageData entityInfo = xgfUserDetailsMapper.findById(condition);
|
||||||
|
UserDTO userDTO = UserDTO.builder()
|
||||||
|
.userName(entity.getString("USERNAME"))
|
||||||
|
.realName(entity.getString("NAME"))
|
||||||
|
.userSex("0".equals(entityInfo.getString("SEX")) ? "男" : "女")
|
||||||
|
.phoneNumber(entity.getString("USERNAME"))
|
||||||
|
.idCard(entityInfo.getString("CARD_ID"))
|
||||||
|
.orgTree("集团外公司(含外协单位)/"+ entity.getString("BELONG_TO_CORP_NAME"))
|
||||||
|
.avatarUrl(entityInfo.getString("PHOTO"))
|
||||||
|
.build();
|
||||||
|
List<UserDTO> list = new ArrayList<UserDTO>();
|
||||||
|
list.add(userDTO);
|
||||||
|
sendMessageUtil.sendMessage(list);
|
||||||
|
|
||||||
// 保存操作记录
|
// 保存操作记录
|
||||||
xgfUserService.saveLog(info, info.getSTATUS(), "1");
|
xgfUserService.saveLog(info, info.getSTATUS(), "1");
|
||||||
info.setIterator("");
|
info.setIterator("");
|
||||||
|
|
|
@ -3,14 +3,19 @@ package com.zcloud.flow.xgf.JiTuan;
|
||||||
import com.yomahub.liteflow.annotation.LiteflowComponent;
|
import com.yomahub.liteflow.annotation.LiteflowComponent;
|
||||||
import com.yomahub.liteflow.core.NodeComponent;
|
import com.yomahub.liteflow.core.NodeComponent;
|
||||||
import com.zcloud.entity.PageData;
|
import com.zcloud.entity.PageData;
|
||||||
|
import com.zcloud.flow.util.SendMessageUtil;
|
||||||
|
import com.zcloud.flow.util.dto.UserDTO;
|
||||||
import com.zcloud.flow.xgf.util.XgfFlowDto;
|
import com.zcloud.flow.xgf.util.XgfFlowDto;
|
||||||
import com.zcloud.mapper.datasource.xgf.XgfFlowsMapper;
|
import com.zcloud.mapper.datasource.xgf.XgfFlowsMapper;
|
||||||
|
import com.zcloud.mapper.datasource.xgf.XgfUserDetailsMapper;
|
||||||
import com.zcloud.mapper.datasource.xgf.XgfUserMapper;
|
import com.zcloud.mapper.datasource.xgf.XgfUserMapper;
|
||||||
import com.zcloud.service.xgf.XgfUserService;
|
import com.zcloud.service.xgf.XgfUserService;
|
||||||
import com.zcloud.util.DateUtil;
|
import com.zcloud.util.DateUtil;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@LiteflowComponent("JiTuanSupervise")
|
@LiteflowComponent("JiTuanSupervise")
|
||||||
public class JiTuanSupervise extends NodeComponent {
|
public class JiTuanSupervise extends NodeComponent {
|
||||||
|
@ -24,6 +29,11 @@ public class JiTuanSupervise extends NodeComponent {
|
||||||
@Resource
|
@Resource
|
||||||
private XgfUserMapper xgfUserMapper;
|
private XgfUserMapper xgfUserMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private XgfUserDetailsMapper xgfUserDetailsMapper;
|
||||||
|
@Resource
|
||||||
|
private SendMessageUtil sendMessageUtil;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAccess() {
|
public boolean isAccess() {
|
||||||
|
|
||||||
|
@ -84,7 +94,22 @@ public class JiTuanSupervise extends NodeComponent {
|
||||||
entity.put("CHECK_STEP", Integer.parseInt(entity.get("CHECK_STEP").toString()) + 1);
|
entity.put("CHECK_STEP", Integer.parseInt(entity.get("CHECK_STEP").toString()) + 1);
|
||||||
entity.put("STATUS", "2");
|
entity.put("STATUS", "2");
|
||||||
xgfUserMapper.edit(entity);
|
xgfUserMapper.edit(entity);
|
||||||
|
// created by liu jun 2024-06-26 工匠学院对接
|
||||||
|
condition.clear();
|
||||||
|
condition.put("XGF_USER_ID", flows.getString("FLOWS_ID"));
|
||||||
|
PageData entityInfo = xgfUserDetailsMapper.findById(condition);
|
||||||
|
UserDTO userDTO = UserDTO.builder()
|
||||||
|
.userName(entity.getString("USERNAME"))
|
||||||
|
.realName(entity.getString("NAME"))
|
||||||
|
.userSex("0".equals(entityInfo.getString("SEX")) ? "男" : "女")
|
||||||
|
.phoneNumber(entity.getString("USERNAME"))
|
||||||
|
.idCard(entityInfo.getString("CARD_ID"))
|
||||||
|
.orgTree("集团外公司(含外协单位)/"+ entity.getString("BELONG_TO_CORP_NAME"))
|
||||||
|
.avatarUrl(entityInfo.getString("PHOTO"))
|
||||||
|
.build();
|
||||||
|
List<UserDTO> list = new ArrayList<UserDTO>();
|
||||||
|
list.add(userDTO);
|
||||||
|
sendMessageUtil.sendMessage(list);
|
||||||
// 保存操作记录
|
// 保存操作记录
|
||||||
xgfUserService.saveLog(info, info.getSTATUS(), "1");
|
xgfUserService.saveLog(info, info.getSTATUS(), "1");
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,9 +3,12 @@ package com.zcloud.flow.xgf.JiTuan;
|
||||||
import com.yomahub.liteflow.annotation.LiteflowComponent;
|
import com.yomahub.liteflow.annotation.LiteflowComponent;
|
||||||
import com.yomahub.liteflow.core.NodeComponent;
|
import com.yomahub.liteflow.core.NodeComponent;
|
||||||
import com.zcloud.entity.PageData;
|
import com.zcloud.entity.PageData;
|
||||||
|
import com.zcloud.flow.util.SendMessageUtil;
|
||||||
|
import com.zcloud.flow.util.dto.UserDTO;
|
||||||
import com.zcloud.flow.xgf.util.XgfFlowDto;
|
import com.zcloud.flow.xgf.util.XgfFlowDto;
|
||||||
import com.zcloud.mapper.datasource.bus.CorpInfoMapper;
|
import com.zcloud.mapper.datasource.bus.CorpInfoMapper;
|
||||||
import com.zcloud.mapper.datasource.xgf.XgfFlowsMapper;
|
import com.zcloud.mapper.datasource.xgf.XgfFlowsMapper;
|
||||||
|
import com.zcloud.mapper.datasource.xgf.XgfUserDetailsMapper;
|
||||||
import com.zcloud.mapper.datasource.xgf.XgfUserMapper;
|
import com.zcloud.mapper.datasource.xgf.XgfUserMapper;
|
||||||
import com.zcloud.service.xgf.XgfUserService;
|
import com.zcloud.service.xgf.XgfUserService;
|
||||||
import com.zcloud.util.DateUtil;
|
import com.zcloud.util.DateUtil;
|
||||||
|
@ -13,6 +16,8 @@ import com.zcloud.util.Jurisdiction;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@LiteflowComponent("JiTuanWeiTuoSupervise")
|
@LiteflowComponent("JiTuanWeiTuoSupervise")
|
||||||
public class JiTuanWeiTuoSupervise extends NodeComponent {
|
public class JiTuanWeiTuoSupervise extends NodeComponent {
|
||||||
|
@ -29,6 +34,11 @@ public class JiTuanWeiTuoSupervise extends NodeComponent {
|
||||||
@Resource
|
@Resource
|
||||||
private CorpInfoMapper corpInfoMapper;
|
private CorpInfoMapper corpInfoMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private XgfUserDetailsMapper xgfUserDetailsMapper;
|
||||||
|
@Resource
|
||||||
|
private SendMessageUtil sendMessageUtil;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAccess() {
|
public boolean isAccess() {
|
||||||
XgfFlowDto info = this.getRequestData();
|
XgfFlowDto info = this.getRequestData();
|
||||||
|
@ -86,6 +96,22 @@ public class JiTuanWeiTuoSupervise extends NodeComponent {
|
||||||
entity.put("CHECK_STEP", Integer.parseInt(entity.get("CHECK_STEP").toString()) + 1);
|
entity.put("CHECK_STEP", Integer.parseInt(entity.get("CHECK_STEP").toString()) + 1);
|
||||||
xgfUserMapper.edit(entity);
|
xgfUserMapper.edit(entity);
|
||||||
|
|
||||||
|
// created by liu jun 2024-06-26 工匠学院对接
|
||||||
|
condition.clear();
|
||||||
|
condition.put("XGF_USER_ID", flows.getString("FLOWS_ID"));
|
||||||
|
PageData entityInfo = xgfUserDetailsMapper.findById(condition);
|
||||||
|
UserDTO userDTO = UserDTO.builder()
|
||||||
|
.userName(entity.getString("USERNAME"))
|
||||||
|
.realName(entity.getString("NAME"))
|
||||||
|
.userSex("0".equals(entityInfo.getString("SEX")) ? "男" : "女")
|
||||||
|
.phoneNumber(entity.getString("USERNAME"))
|
||||||
|
.idCard(entityInfo.getString("CARD_ID"))
|
||||||
|
.orgTree("集团外公司(含外协单位)/"+ entity.getString("BELONG_TO_CORP_NAME"))
|
||||||
|
.avatarUrl(entityInfo.getString("PHOTO"))
|
||||||
|
.build();
|
||||||
|
List<UserDTO> list = new ArrayList<UserDTO>();
|
||||||
|
list.add(userDTO);
|
||||||
|
sendMessageUtil.sendMessage(list);
|
||||||
// 保存操作记录
|
// 保存操作记录
|
||||||
xgfUserService.saveLog(info, info.getSTATUS(), "1");
|
xgfUserService.saveLog(info, info.getSTATUS(), "1");
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,8 +3,11 @@ package com.zcloud.flow.xgf.YiBan;
|
||||||
import com.yomahub.liteflow.annotation.LiteflowComponent;
|
import com.yomahub.liteflow.annotation.LiteflowComponent;
|
||||||
import com.yomahub.liteflow.core.NodeComponent;
|
import com.yomahub.liteflow.core.NodeComponent;
|
||||||
import com.zcloud.entity.PageData;
|
import com.zcloud.entity.PageData;
|
||||||
|
import com.zcloud.flow.util.SendMessageUtil;
|
||||||
|
import com.zcloud.flow.util.dto.UserDTO;
|
||||||
import com.zcloud.mapper.datasource.bus.CorpInfoMapper;
|
import com.zcloud.mapper.datasource.bus.CorpInfoMapper;
|
||||||
import com.zcloud.mapper.datasource.xgf.XgfFlowsMapper;
|
import com.zcloud.mapper.datasource.xgf.XgfFlowsMapper;
|
||||||
|
import com.zcloud.mapper.datasource.xgf.XgfUserDetailsMapper;
|
||||||
import com.zcloud.mapper.datasource.xgf.XgfUserMapper;
|
import com.zcloud.mapper.datasource.xgf.XgfUserMapper;
|
||||||
import com.zcloud.flow.xgf.util.XgfFlowDto;
|
import com.zcloud.flow.xgf.util.XgfFlowDto;
|
||||||
import com.zcloud.service.xgf.XgfUserService;
|
import com.zcloud.service.xgf.XgfUserService;
|
||||||
|
@ -13,9 +16,12 @@ import com.zcloud.util.Jurisdiction;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@LiteflowComponent("YiBanSupervise")
|
@LiteflowComponent("YiBanSupervise")
|
||||||
@SuppressWarnings("all")
|
|
||||||
public class YiBanSupervise extends NodeComponent {
|
public class YiBanSupervise extends NodeComponent {
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
|
@ -27,6 +33,11 @@ public class YiBanSupervise extends NodeComponent {
|
||||||
@Resource
|
@Resource
|
||||||
private XgfUserMapper xgfUserMapper;
|
private XgfUserMapper xgfUserMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private XgfUserDetailsMapper xgfUserDetailsMapper;
|
||||||
|
@Resource
|
||||||
|
private SendMessageUtil sendMessageUtil;
|
||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private CorpInfoMapper corpInfoMapper;
|
private CorpInfoMapper corpInfoMapper;
|
||||||
|
|
||||||
|
@ -118,7 +129,22 @@ public class YiBanSupervise extends NodeComponent {
|
||||||
entity.put("STATUS", "2");
|
entity.put("STATUS", "2");
|
||||||
entity.put("CHECK_STEP", Integer.parseInt(entity.get("CHECK_STEP").toString()) + 1);
|
entity.put("CHECK_STEP", Integer.parseInt(entity.get("CHECK_STEP").toString()) + 1);
|
||||||
xgfUserMapper.edit(entity);
|
xgfUserMapper.edit(entity);
|
||||||
|
// created by liu jun 2024-06-26 工匠学院对接
|
||||||
|
condition.clear();
|
||||||
|
condition.put("XGF_USER_ID", flows.getString("FLOWS_ID"));
|
||||||
|
PageData entityInfo = xgfUserDetailsMapper.findById(condition);
|
||||||
|
UserDTO userDTO = UserDTO.builder()
|
||||||
|
.userName(entity.getString("USERNAME"))
|
||||||
|
.realName(entity.getString("NAME"))
|
||||||
|
.userSex("0".equals(entityInfo.getString("SEX")) ? "男" : "女")
|
||||||
|
.phoneNumber(entity.getString("USERNAME"))
|
||||||
|
.idCard(entityInfo.getString("CARD_ID"))
|
||||||
|
.orgTree("集团外公司(含外协单位)/"+ entity.getString("BELONG_TO_CORP_NAME"))
|
||||||
|
.avatarUrl(entityInfo.getString("PHOTO"))
|
||||||
|
.build();
|
||||||
|
List<UserDTO> list = new ArrayList<UserDTO>();
|
||||||
|
list.add(userDTO);
|
||||||
|
sendMessageUtil.sendMessage(list);
|
||||||
// 保存操作记录
|
// 保存操作记录
|
||||||
xgfUserService.saveLog(info, info.getSTATUS(), "1");
|
xgfUserService.saveLog(info, info.getSTATUS(), "1");
|
||||||
}
|
}
|
||||||
|
|
|
@ -931,6 +931,13 @@ public class XgfUserServiceImpl implements XgfUserService {
|
||||||
flow.put("APPOINT_SEVEN_USER_ID", "");
|
flow.put("APPOINT_SEVEN_USER_ID", "");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 保存操作记录
|
||||||
|
* @param info
|
||||||
|
* @param status 通过标识符
|
||||||
|
* @param endFlag 流程结束标识符
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
public void saveLog(PageData info, String status, String endFlag) throws Exception {
|
public void saveLog(PageData info, String status, String endFlag) throws Exception {
|
||||||
/* 保存审批记录 */
|
/* 保存审批记录 */
|
||||||
PageData condition = new PageData();
|
PageData condition = new PageData();
|
||||||
|
|
|
@ -132,3 +132,8 @@ heBeiQinAnFile=https://file.zcloudchina.com/YTHFile
|
||||||
|
|
||||||
liteflow.rule-source=flow.xml
|
liteflow.rule-source=flow.xml
|
||||||
liteflow.print-execution-log=false
|
liteflow.print-execution-log=false
|
||||||
|
|
||||||
|
gongJiangXueYuanSendPublicKey=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzbwmqhb5xVejFQFoa8NF2FGtb2nMtpalZ2Zcy78tL/5Y5Od78EKb9dALuv4b+F/PexynKrQDlnRhAouuqF8S1LuC0njbWSaFMofCeyeoltSQTEcjwzEAOPH9CnzGOZQ19tB2vEamVoLefWC4H0V+e5hWv7DDCm3bLNaHhMnR1/o0ASZqzIHYDEzVZNGrxR8WIhxUh7fORk75nEUyz2S6WKq1MlOkm8ZssMsFW+KacRTnexn8Q2p8/7/3zRCScLoH3pHA+J35nuP+doigUmPJzwHfPsr1QeYdadtuwZdfCZVQ7U4R4vB83NsSElAgTW+xHzy7Y1EcgZgYfSedetb03QIDAQAB
|
||||||
|
gongJiangXueYuanSendPrivateKey=58e5e358b220335e7b1c6cc3576ceecc28b4a95d96cbbe0
|
||||||
|
gongJiangXueYuanTestUrl=http://fy04.bjttsx.com
|
||||||
|
gongJiangXueYuanProdUrl=https://gjxy.bjttsx.com
|
||||||
|
|
|
@ -107,3 +107,8 @@ gwj-baseimgpath=https://qgqy.qhdsafety.com/file/
|
||||||
gwj-backendaddr=http://192.168.0.31:8991/qa-prevention-gwj/
|
gwj-backendaddr=http://192.168.0.31:8991/qa-prevention-gwj/
|
||||||
|
|
||||||
cfd.prevention.api.url=http://192.168.0.31:7021/qa-regulatory-cfd
|
cfd.prevention.api.url=http://192.168.0.31:7021/qa-regulatory-cfd
|
||||||
|
|
||||||
|
gongJiangXueYuanSendPublicKey=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzbwmqhb5xVejFQFoa8NF2FGtb2nMtpalZ2Zcy78tL/5Y5Od78EKb9dALuv4b+F/PexynKrQDlnRhAouuqF8S1LuC0njbWSaFMofCeyeoltSQTEcjwzEAOPH9CnzGOZQ19tB2vEamVoLefWC4H0V+e5hWv7DDCm3bLNaHhMnR1/o0ASZqzIHYDEzVZNGrxR8WIhxUh7fORk75nEUyz2S6WKq1MlOkm8ZssMsFW+KacRTnexn8Q2p8/7/3zRCScLoH3pHA+J35nuP+doigUmPJzwHfPsr1QeYdadtuwZdfCZVQ7U4R4vB83NsSElAgTW+xHzy7Y1EcgZgYfSedetb03QIDAQAB
|
||||||
|
gongJiangXueYuanSendPrivateKey=58e5e358b220335e7b1c6cc3576ceecc28b4a95d96cbbe0
|
||||||
|
gongJiangXueYuanTestUrl=http://fy04.bjttsx.com
|
||||||
|
gongJiangXueYuanProdUrl=https://gjxy.bjttsx.com
|
|
@ -104,3 +104,9 @@ biaoZhunShuJuKu=https://file.zcloudchina.com/
|
||||||
|
|
||||||
liteflow.rule-source=flow.xml
|
liteflow.rule-source=flow.xml
|
||||||
liteflow.print-execution-log=false
|
liteflow.print-execution-log=false
|
||||||
|
|
||||||
|
gongJiangXueYuanSendPublicKey=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzbwmqhb5xVejFQFoa8NF2FGtb2nMtpalZ2Zcy78tL/5Y5Od78EKb9dALuv4b+F/PexynKrQDlnRhAouuqF8S1LuC0njbWSaFMofCeyeoltSQTEcjwzEAOPH9CnzGOZQ19tB2vEamVoLefWC4H0V+e5hWv7DDCm3bLNaHhMnR1/o0ASZqzIHYDEzVZNGrxR8WIhxUh7fORk75nEUyz2S6WKq1MlOkm8ZssMsFW+KacRTnexn8Q2p8/7/3zRCScLoH3pHA+J35nuP+doigUmPJzwHfPsr1QeYdadtuwZdfCZVQ7U4R4vB83NsSElAgTW+xHzy7Y1EcgZgYfSedetb03QIDAQAB
|
||||||
|
gongJiangXueYuanSendPrivateKey=58e5e358b220335e7b1c6cc3576ceecc28b4a95d96cbbe0
|
||||||
|
gongJiangXueYuanTestUrl=http://fy04.bjttsx.com
|
||||||
|
gongJiangXueYuanProdUrl=https://gjxy.bjttsx.com
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue