Merge branch 'refs/heads/liujun-2024-06-20-工匠学员对接' into dev
commit
a29eccbca7
|
@ -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,164 @@
|
|||
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.alibaba.fastjson.JSONObject;
|
||||
import com.alibaba.fastjson.TypeReference;
|
||||
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.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 工匠学院
|
||||
*/
|
||||
|
||||
@Component
|
||||
public class GJSendMessageUtil {
|
||||
|
||||
/**
|
||||
* 工匠学苑 服务地址(测试环境)
|
||||
**/
|
||||
@Value("${gongJiangXueYuanTestUrl}")
|
||||
private String SERVER_URL_TEST;
|
||||
/**
|
||||
* 工匠学苑 服务地址(生产环境)
|
||||
**/
|
||||
@Value("${gongJiangXueYuanProdUrl}")
|
||||
private String SERVER_URL_PROD;
|
||||
|
||||
/**
|
||||
* 工匠学苑 RSA公钥
|
||||
**/
|
||||
@Value("${gongJiangXueYuanSendPublicKey}")
|
||||
private String RSA_PUBLIC_KEY;
|
||||
/**
|
||||
* 系统对接密钥
|
||||
**/
|
||||
@Value("${gongJiangXueYuanSendPrivateKey}")
|
||||
private 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 {
|
||||
|
||||
Map<String, Object> paramDataMap = new HashMap<>();
|
||||
paramDataMap.put("userList", users);
|
||||
String body = "";
|
||||
try {
|
||||
// 发起请求
|
||||
body = this.createPostFormHttpRequest("/API-BACKEND/openapi/user/v1/syncNotify", paramDataMap);
|
||||
}catch (Exception e){
|
||||
e.printStackTrace();
|
||||
throw new RuntimeException("网络通信异常");
|
||||
}
|
||||
Map<String, String> _body = JSONObject.parseObject(body, new TypeReference<Map<String, String>>() {});
|
||||
Map<String, String> data = JSONObject.parseObject(_body.get("data"), new TypeReference<Map<String, String>>() {});
|
||||
if (!"1".equals(_body.get("code"))) {
|
||||
System.out.println(_body.get("message"));
|
||||
throw new RuntimeException("工匠学院异常,请联系学院老师");
|
||||
}
|
||||
if (!data.get("syncUserTotal").equals(data.get("syncSuccessCount"))){
|
||||
String errorMsg = JSONObject.parseArray(data.get("msgList"), Map.class).stream().map(e -> "[" + e.get("msg") + "]").collect(Collectors.joining());
|
||||
throw new RuntimeException("工匠学院异常,请联系学院老师。错误信息:" + errorMsg);
|
||||
}
|
||||
System.out.println("==========================");
|
||||
System.out.println(body);
|
||||
System.out.println("==========================");
|
||||
System.out.println(JSONObject.toJSONString(paramDataMap));
|
||||
System.out.println("==========================");
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* post请求
|
||||
*
|
||||
* @param uri 接口地址
|
||||
* @param paramDataMap 请求参数(明文)
|
||||
* @return String
|
||||
*/
|
||||
public 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();
|
||||
System.out.println(response.body());
|
||||
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,14 +3,20 @@ 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.GJSendMessageUtil;
|
||||
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;
|
||||
import com.zcloud.flow.xgf.util.XgfFlowDto;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@LiteflowComponent("GuFenSupervise")
|
||||
@SuppressWarnings("all")
|
||||
|
@ -25,6 +31,13 @@ public class GuFenSupervise extends NodeComponent {
|
|||
@Resource
|
||||
private XgfUserMapper xgfUserMapper;
|
||||
|
||||
@Resource
|
||||
private XgfUserDetailsMapper xgfUserDetailsMapper;
|
||||
@Resource
|
||||
private GJSendMessageUtil gjSendMessageUtil;
|
||||
@Value("${gongJiangXueYuanGetImgUrl}")
|
||||
private String imgBaseUrl;
|
||||
|
||||
@Override
|
||||
public boolean isAccess() {
|
||||
XgfFlowDto info = this.getRequestData();
|
||||
|
@ -83,7 +96,22 @@ public class GuFenSupervise 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_DETAILS_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(imgBaseUrl + entityInfo.getString("PHOTO"))
|
||||
.build();
|
||||
List<UserDTO> list = new ArrayList<UserDTO>();
|
||||
list.add(userDTO);
|
||||
gjSendMessageUtil.sendMessage(list);
|
||||
// 保存操作记录
|
||||
xgfUserService.saveLog(info, info.getSTATUS(), "1");
|
||||
}
|
||||
|
|
|
@ -3,16 +3,22 @@ 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.GJSendMessageUtil;
|
||||
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;
|
||||
import com.zcloud.util.Jurisdiction;
|
||||
import com.zcloud.flow.xgf.util.XgfFlowDto;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@LiteflowComponent("GuFenWeiTuoSupervise")
|
||||
@SuppressWarnings("all")
|
||||
|
@ -30,6 +36,13 @@ public class GuFenWeiTuoSupervise extends NodeComponent {
|
|||
@Resource
|
||||
private CorpInfoMapper corpInfoMapper;
|
||||
|
||||
@Resource
|
||||
private XgfUserDetailsMapper xgfUserDetailsMapper;
|
||||
@Resource
|
||||
private GJSendMessageUtil gjSendMessageUtil;
|
||||
@Value("${gongJiangXueYuanGetImgUrl}")
|
||||
private String imgBaseUrl;
|
||||
|
||||
@Override
|
||||
public boolean isAccess() {
|
||||
System.out.println("2???????");
|
||||
|
@ -87,6 +100,22 @@ public class GuFenWeiTuoSupervise 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_DETAILS_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(imgBaseUrl + entityInfo.getString("PHOTO"))
|
||||
.build();
|
||||
List<UserDTO> list = new ArrayList<UserDTO>();
|
||||
list.add(userDTO);
|
||||
gjSendMessageUtil.sendMessage(list);
|
||||
|
||||
// 保存操作记录
|
||||
xgfUserService.saveLog(info, info.getSTATUS(), "1");
|
||||
|
|
|
@ -3,14 +3,21 @@ 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.GJSendMessageUtil;
|
||||
import com.zcloud.flow.util.GJSendMessageUtil;
|
||||
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 org.springframework.beans.factory.annotation.Value;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@LiteflowComponent("JiTuanSupervise")
|
||||
public class JiTuanSupervise extends NodeComponent {
|
||||
|
@ -24,6 +31,13 @@ public class JiTuanSupervise extends NodeComponent {
|
|||
@Resource
|
||||
private XgfUserMapper xgfUserMapper;
|
||||
|
||||
@Resource
|
||||
private XgfUserDetailsMapper xgfUserDetailsMapper;
|
||||
@Resource
|
||||
private GJSendMessageUtil gjSendMessageUtil;
|
||||
@Value("${gongJiangXueYuanGetImgUrl}")
|
||||
private String imgBaseUrl;
|
||||
|
||||
@Override
|
||||
public boolean isAccess() {
|
||||
|
||||
|
@ -85,7 +99,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_DETAILS_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(imgBaseUrl + entityInfo.getString("PHOTO"))
|
||||
.build();
|
||||
List<UserDTO> list = new ArrayList<UserDTO>();
|
||||
list.add(userDTO);
|
||||
gjSendMessageUtil.sendMessage(list);
|
||||
// 保存操作记录
|
||||
xgfUserService.saveLog(info, info.getSTATUS(), "1");
|
||||
}
|
||||
|
|
|
@ -3,16 +3,22 @@ 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.GJSendMessageUtil;
|
||||
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;
|
||||
import com.zcloud.util.Jurisdiction;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@LiteflowComponent("JiTuanWeiTuoSupervise")
|
||||
public class JiTuanWeiTuoSupervise extends NodeComponent {
|
||||
|
@ -29,6 +35,13 @@ public class JiTuanWeiTuoSupervise extends NodeComponent {
|
|||
@Resource
|
||||
private CorpInfoMapper corpInfoMapper;
|
||||
|
||||
@Resource
|
||||
private XgfUserDetailsMapper xgfUserDetailsMapper;
|
||||
@Resource
|
||||
private GJSendMessageUtil gjSendMessageUtil;
|
||||
@Value("${gongJiangXueYuanGetImgUrl}")
|
||||
private String imgBaseUrl;
|
||||
|
||||
@Override
|
||||
public boolean isAccess() {
|
||||
XgfFlowDto info = this.getRequestData();
|
||||
|
@ -86,7 +99,22 @@ public class JiTuanWeiTuoSupervise 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_DETAILS_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(imgBaseUrl + entityInfo.getString("PHOTO"))
|
||||
.build();
|
||||
List<UserDTO> list = new ArrayList<UserDTO>();
|
||||
list.add(userDTO);
|
||||
gjSendMessageUtil.sendMessage(list);
|
||||
// 保存操作记录
|
||||
xgfUserService.saveLog(info, info.getSTATUS(), "1");
|
||||
}
|
||||
|
|
|
@ -3,16 +3,22 @@ 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.GJSendMessageUtil;
|
||||
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;
|
||||
import com.zcloud.util.DateUtil;
|
||||
import com.zcloud.util.Jurisdiction;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@LiteflowComponent("YiBanSupervise")
|
||||
@SuppressWarnings("all")
|
||||
|
@ -27,8 +33,15 @@ public class YiBanSupervise extends NodeComponent {
|
|||
@Resource
|
||||
private XgfUserMapper xgfUserMapper;
|
||||
|
||||
@Resource
|
||||
private XgfUserDetailsMapper xgfUserDetailsMapper;
|
||||
@Resource
|
||||
private GJSendMessageUtil gjSendMessageUtil;
|
||||
|
||||
@Resource
|
||||
private CorpInfoMapper corpInfoMapper;
|
||||
@Value("${gongJiangXueYuanGetImgUrl}")
|
||||
private String imgBaseUrl;
|
||||
|
||||
@Override
|
||||
public boolean isAccess() {
|
||||
|
@ -118,7 +131,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_DETAILS_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(imgBaseUrl + entityInfo.getString("PHOTO"))
|
||||
.build();
|
||||
List<UserDTO> list = new ArrayList<UserDTO>();
|
||||
list.add(userDTO);
|
||||
gjSendMessageUtil.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();
|
||||
|
|
|
@ -55,7 +55,7 @@ spring.main.banner-mode=off
|
|||
#web.front-path=h:/
|
||||
#spring.resources.static-locations=file:${web.upload-path},file:${web.front-path}
|
||||
|
||||
#preventionxgf.api.url=http://192.168.0.79:8088
|
||||
#preventionxgf.api.url=http://127.0.0.1:8088/
|
||||
#
|
||||
#qa-regulatory-gwj.api.url=http://192.168.0.79:8008
|
||||
preventionxgf.api.url=http://39.100.115.58:8082/qa-prevention-xgf/
|
||||
|
@ -91,12 +91,12 @@ corp.default.pic-path=https://qgqy.qhdsafety.com/
|
|||
corp.default.back-end-path=https://qgqy.qhdsafety.com/file/
|
||||
|
||||
|
||||
#用户标识
|
||||
# 沧州矿石
|
||||
#\u7528\u6237\u6807\u8BC6
|
||||
# \u6CA7\u5DDE\u77FF\u77F3
|
||||
czks-useridentity=CZKS
|
||||
czks-baseimgpath=https://wwag.qhdsafety.com/file/
|
||||
czks-backendaddr=http://192.168.0.79:8091/
|
||||
# 港务局
|
||||
# \u6E2F\u52A1\u5C40
|
||||
gwj-useridentity=GWJ
|
||||
gwj-baseimgpath=https://qgqy.qhdsafety.com/file/
|
||||
gwj-backendaddr=http://192.168.0.31:8991/qa-prevention-gwj/
|
||||
|
@ -125,10 +125,20 @@ mq.czks.file.group=scheduled_tasks_czks_dockingPicture
|
|||
mq.gwj.data.topic=czks_docking
|
||||
mq.gwj.file.topic=czks_dockingPicture
|
||||
|
||||
#港务局文件服务器前缀
|
||||
#\u6E2F\u52A1\u5C40\u6587\u4EF6\u670D\u52A1\u5668\u524D\u7F00
|
||||
cfd.prevention.api.url=http://192.168.0.31:7021/qa-regulatory-cfd
|
||||
#河北秦安文件服务器前缀
|
||||
#\u6CB3\u5317\u79E6\u5B89\u6587\u4EF6\u670D\u52A1\u5668\u524D\u7F00
|
||||
heBeiQinAnFile=https://file.zcloudchina.com/YTHFile
|
||||
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
|
||||
# \u7ED9\u5DE5\u5320\u5B66\u9662\u63A8\u9001\u4EBA\u5458\u6570\u636E\u65F6\u7684\u56FE\u7247\u9644\u4EF6\u524D\u7F00 \uFF08\u6B63\u5F0F\u516C\u7F51\uFF09
|
||||
#gongJiangXueYuanGetImgUrl=https://skqhdg.porthebei.com:9004/file/
|
||||
# \u7ED9\u5DE5\u5320\u5B66\u9662\u63A8\u9001\u4EBA\u5458\u6570\u636E\u65F6\u7684\u56FE\u7247\u9644\u4EF6\u524D\u7F00 \uFF08\u6D4B\u8BD5\u516C\u7F51\uFF09
|
||||
gongJiangXueYuanGetImgUrl=https://wwag.qhdsafety.com/file/
|
||||
|
|
|
@ -118,22 +118,25 @@ mq.czks.data.group=scheduled_tasks_czks_docking
|
|||
mq.czks.file.topic=czks_dockingPicture
|
||||
mq.czks.file.group=scheduled_tasks_czks_dockingPicture
|
||||
|
||||
mq.gwj.data.topic=czks_docking
|
||||
mq.gwj.file.topic=czks_dockingPicture
|
||||
baseimgpath =http://192.168.192.201:8991/file/
|
||||
|
||||
heBeiQinAnFile=https://file.zcloudchina.com/YTHFile
|
||||
biaoZhunShuJuKu=https://file.zcloudchina.com/
|
||||
dw.url=http://192.168.192.201:8888/qa-dingWei-gwj/
|
||||
|
||||
#<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>ʶ
|
||||
# <EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>ʯ
|
||||
#\uFFFD\u00FB\uFFFD\uFFFD\uFFFD\u02B6
|
||||
# \uFFFD\uFFFD\uFFFD\u077F\uFFFD\u02AF
|
||||
czks-useridentity=CZKS
|
||||
czks-baseimgpath=https://wwag.qhdsafety.com/file/
|
||||
czks-backendaddr=http://192.168.0.79:8091/
|
||||
# <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||
# \uFFFD\uFFFD\uFFFD\uFFFD\uFFFD
|
||||
gwj-useridentity=GWJ
|
||||
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
|
||||
# \u7ED9\u5DE5\u5320\u5B66\u9662\u63A8\u9001\u4EBA\u5458\u6570\u636E\u65F6\u7684\u56FE\u7247\u9644\u4EF6\u524D\u7F00 \uFF08\u6B63\u5F0F\u516C\u7F51\uFF09
|
||||
#gongJiangXueYuanGetImgUrl=https://skqhdg.porthebei.com:9004/file/
|
||||
# \u7ED9\u5DE5\u5320\u5B66\u9662\u63A8\u9001\u4EBA\u5458\u6570\u636E\u65F6\u7684\u56FE\u7247\u9644\u4EF6\u524D\u7F00 \uFF08\u6D4B\u8BD5\u516C\u7F51\uFF09
|
||||
gongJiangXueYuanGetImgUrl=https://wwag.qhdsafety.com/file/
|
|
@ -119,3 +119,13 @@ 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
|
||||
# \u7ED9\u5DE5\u5320\u5B66\u9662\u63A8\u9001\u4EBA\u5458\u6570\u636E\u65F6\u7684\u56FE\u7247\u9644\u4EF6\u524D\u7F00 \uFF08\u6B63\u5F0F\u516C\u7F51\uFF09
|
||||
gongJiangXueYuanGetImgUrl=https://skqhdg.porthebei.com:9004/file/
|
||||
# \u7ED9\u5DE5\u5320\u5B66\u9662\u63A8\u9001\u4EBA\u5458\u6570\u636E\u65F6\u7684\u56FE\u7247\u9644\u4EF6\u524D\u7F00 \uFF08\u6D4B\u8BD5\u516C\u7F51\uFF09
|
||||
#gongJiangXueYuanGetImgUrl=https://wwag.qhdsafety.com/file/
|
||||
|
||||
|
|
|
@ -2,9 +2,9 @@ spring.application.name=qa-prevention-gwj
|
|||
server.port=8091
|
||||
|
||||
#??
|
||||
spring.profiles.active=local
|
||||
#<EFBFBD><EFBFBD><EFBFBD><EFBFBD>31ʱʹ<EFBFBD><EFBFBD>
|
||||
#spring.profiles.active=dev
|
||||
#spring.profiles.active=local
|
||||
#\uFFFD\uFFFD\uFFFD\uFFFD31\u02B1\u02B9\uFFFD\uFFFD
|
||||
spring.profiles.active=dev
|
||||
#??
|
||||
#spring.profiles.active=master
|
||||
|
||||
|
|
Loading…
Reference in New Issue