工匠学院人员对接功能完善
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.core.NodeComponent;
|
||||
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.XgfUserDetailsMapper;
|
||||
import com.zcloud.mapper.datasource.xgf.XgfUserMapper;
|
||||
import com.zcloud.service.xgf.XgfUserService;
|
||||
import com.zcloud.util.DateUtil;
|
||||
|
@ -11,6 +14,8 @@ import com.zcloud.flow.xgf.util.XgfFlowDto;
|
|||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@LiteflowComponent("GuFenSupervise")
|
||||
@SuppressWarnings("all")
|
||||
|
@ -25,6 +30,11 @@ public class GuFenSupervise extends NodeComponent {
|
|||
@Resource
|
||||
private XgfUserMapper xgfUserMapper;
|
||||
|
||||
@Resource
|
||||
private XgfUserDetailsMapper xgfUserDetailsMapper;
|
||||
@Resource
|
||||
private SendMessageUtil sendMessageUtil;
|
||||
|
||||
@Override
|
||||
public boolean isAccess() {
|
||||
XgfFlowDto info = this.getRequestData();
|
||||
|
@ -85,6 +95,22 @@ public class GuFenSupervise extends NodeComponent {
|
|||
entity.put("STATUS", "2");
|
||||
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");
|
||||
}
|
||||
|
|
|
@ -3,8 +3,11 @@ package com.zcloud.flow.xgf.GuFen;
|
|||
import com.yomahub.liteflow.annotation.LiteflowComponent;
|
||||
import com.yomahub.liteflow.core.NodeComponent;
|
||||
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.xgf.XgfFlowsMapper;
|
||||
import com.zcloud.mapper.datasource.xgf.XgfUserDetailsMapper;
|
||||
import com.zcloud.mapper.datasource.xgf.XgfUserMapper;
|
||||
import com.zcloud.service.xgf.XgfUserService;
|
||||
import com.zcloud.util.DateUtil;
|
||||
|
@ -13,6 +16,8 @@ import com.zcloud.flow.xgf.util.XgfFlowDto;
|
|||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@LiteflowComponent("GuFenWeiTuoSupervise")
|
||||
@SuppressWarnings("all")
|
||||
|
@ -30,9 +35,13 @@ public class GuFenWeiTuoSupervise extends NodeComponent {
|
|||
@Resource
|
||||
private CorpInfoMapper corpInfoMapper;
|
||||
|
||||
@Resource
|
||||
private XgfUserDetailsMapper xgfUserDetailsMapper;
|
||||
@Resource
|
||||
private SendMessageUtil sendMessageUtil;
|
||||
|
||||
@Override
|
||||
public boolean isAccess() {
|
||||
System.out.println("2???????");
|
||||
XgfFlowDto info = this.getRequestData();
|
||||
// 如果指针没有数据,赋值后自动结束
|
||||
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);
|
||||
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");
|
||||
info.setIterator("");
|
||||
|
|
|
@ -3,14 +3,19 @@ package com.zcloud.flow.xgf.JiTuan;
|
|||
import com.yomahub.liteflow.annotation.LiteflowComponent;
|
||||
import com.yomahub.liteflow.core.NodeComponent;
|
||||
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.mapper.datasource.xgf.XgfFlowsMapper;
|
||||
import com.zcloud.mapper.datasource.xgf.XgfUserDetailsMapper;
|
||||
import com.zcloud.mapper.datasource.xgf.XgfUserMapper;
|
||||
import com.zcloud.service.xgf.XgfUserService;
|
||||
import com.zcloud.util.DateUtil;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@LiteflowComponent("JiTuanSupervise")
|
||||
public class JiTuanSupervise extends NodeComponent {
|
||||
|
@ -24,6 +29,11 @@ public class JiTuanSupervise extends NodeComponent {
|
|||
@Resource
|
||||
private XgfUserMapper xgfUserMapper;
|
||||
|
||||
@Resource
|
||||
private XgfUserDetailsMapper xgfUserDetailsMapper;
|
||||
@Resource
|
||||
private SendMessageUtil sendMessageUtil;
|
||||
|
||||
@Override
|
||||
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("STATUS", "2");
|
||||
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");
|
||||
}
|
||||
|
|
|
@ -3,9 +3,12 @@ package com.zcloud.flow.xgf.JiTuan;
|
|||
import com.yomahub.liteflow.annotation.LiteflowComponent;
|
||||
import com.yomahub.liteflow.core.NodeComponent;
|
||||
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.mapper.datasource.bus.CorpInfoMapper;
|
||||
import com.zcloud.mapper.datasource.xgf.XgfFlowsMapper;
|
||||
import com.zcloud.mapper.datasource.xgf.XgfUserDetailsMapper;
|
||||
import com.zcloud.mapper.datasource.xgf.XgfUserMapper;
|
||||
import com.zcloud.service.xgf.XgfUserService;
|
||||
import com.zcloud.util.DateUtil;
|
||||
|
@ -13,6 +16,8 @@ import com.zcloud.util.Jurisdiction;
|
|||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@LiteflowComponent("JiTuanWeiTuoSupervise")
|
||||
public class JiTuanWeiTuoSupervise extends NodeComponent {
|
||||
|
@ -29,6 +34,11 @@ public class JiTuanWeiTuoSupervise extends NodeComponent {
|
|||
@Resource
|
||||
private CorpInfoMapper corpInfoMapper;
|
||||
|
||||
@Resource
|
||||
private XgfUserDetailsMapper xgfUserDetailsMapper;
|
||||
@Resource
|
||||
private SendMessageUtil sendMessageUtil;
|
||||
|
||||
@Override
|
||||
public boolean isAccess() {
|
||||
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);
|
||||
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");
|
||||
}
|
||||
|
|
|
@ -3,8 +3,11 @@ package com.zcloud.flow.xgf.YiBan;
|
|||
import com.yomahub.liteflow.annotation.LiteflowComponent;
|
||||
import com.yomahub.liteflow.core.NodeComponent;
|
||||
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.xgf.XgfFlowsMapper;
|
||||
import com.zcloud.mapper.datasource.xgf.XgfUserDetailsMapper;
|
||||
import com.zcloud.mapper.datasource.xgf.XgfUserMapper;
|
||||
import com.zcloud.flow.xgf.util.XgfFlowDto;
|
||||
import com.zcloud.service.xgf.XgfUserService;
|
||||
|
@ -13,9 +16,12 @@ import com.zcloud.util.Jurisdiction;
|
|||
import org.apache.commons.lang3.StringUtils;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
@LiteflowComponent("YiBanSupervise")
|
||||
@SuppressWarnings("all")
|
||||
public class YiBanSupervise extends NodeComponent {
|
||||
|
||||
@Resource
|
||||
|
@ -27,6 +33,11 @@ public class YiBanSupervise extends NodeComponent {
|
|||
@Resource
|
||||
private XgfUserMapper xgfUserMapper;
|
||||
|
||||
@Resource
|
||||
private XgfUserDetailsMapper xgfUserDetailsMapper;
|
||||
@Resource
|
||||
private SendMessageUtil sendMessageUtil;
|
||||
|
||||
@Resource
|
||||
private CorpInfoMapper corpInfoMapper;
|
||||
|
||||
|
@ -102,10 +113,10 @@ public class YiBanSupervise extends NodeComponent {
|
|||
flows.put("APPOINT_ONE_TIME", DateUtil.getTime());
|
||||
flows.put("APPOINT_ONE_STATUS", info.getSTATUS());
|
||||
flows.put("APPOINT_ONE_OPINION", info.getOPINION());
|
||||
flows.put("OPINION",info.getOPINION());
|
||||
flows.put("OPINION", info.getOPINION());
|
||||
if ("0".equals(info.getSTATUS())) {
|
||||
// 打回至相关方端
|
||||
xgfUserService.repulse(flows,info);
|
||||
xgfUserService.repulse(flows, info);
|
||||
// 保存操作记录
|
||||
xgfUserService.saveLog(info, info.getSTATUS(), "0");
|
||||
} else {
|
||||
|
@ -118,7 +129,22 @@ public class YiBanSupervise extends NodeComponent {
|
|||
entity.put("STATUS", "2");
|
||||
entity.put("CHECK_STEP", Integer.parseInt(entity.get("CHECK_STEP").toString()) + 1);
|
||||
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");
|
||||
}
|
||||
|
|
|
@ -931,6 +931,13 @@ public class XgfUserServiceImpl implements XgfUserService {
|
|||
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 {
|
||||
/* 保存审批记录 */
|
||||
PageData condition = new PageData();
|
||||
|
|
|
@ -132,3 +132,8 @@ heBeiQinAnFile=https://file.zcloudchina.com/YTHFile
|
|||
|
||||
liteflow.rule-source=flow.xml
|
||||
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/
|
||||
|
||||
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.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