Merge branch 'refs/heads/liujun-2024-06-20-工匠学员对接' into dev

xuyifeng-0724-人员中台对接-dev
water_xu 2024-07-17 16:37:51 +08:00
commit a29eccbca7
14 changed files with 576 additions and 22 deletions

View File

@ -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);
}
}

View File

@ -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];
}
}

View File

@ -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 "";
}
}

View File

@ -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;
}

View File

@ -3,14 +3,20 @@ 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.GJSendMessageUtil;
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;
import com.zcloud.flow.xgf.util.XgfFlowDto; import com.zcloud.flow.xgf.util.XgfFlowDto;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
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 +31,13 @@ public class GuFenSupervise extends NodeComponent {
@Resource @Resource
private XgfUserMapper xgfUserMapper; private XgfUserMapper xgfUserMapper;
@Resource
private XgfUserDetailsMapper xgfUserDetailsMapper;
@Resource
private GJSendMessageUtil gjSendMessageUtil;
@Value("${gongJiangXueYuanGetImgUrl}")
private String imgBaseUrl;
@Override @Override
public boolean isAccess() { public boolean isAccess() {
XgfFlowDto info = this.getRequestData(); 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("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_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"); xgfUserService.saveLog(info, info.getSTATUS(), "1");
} }

View File

@ -3,16 +3,22 @@ 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.GJSendMessageUtil;
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;
import com.zcloud.util.Jurisdiction; import com.zcloud.util.Jurisdiction;
import com.zcloud.flow.xgf.util.XgfFlowDto; import com.zcloud.flow.xgf.util.XgfFlowDto;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
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,6 +36,13 @@ public class GuFenWeiTuoSupervise extends NodeComponent {
@Resource @Resource
private CorpInfoMapper corpInfoMapper; private CorpInfoMapper corpInfoMapper;
@Resource
private XgfUserDetailsMapper xgfUserDetailsMapper;
@Resource
private GJSendMessageUtil gjSendMessageUtil;
@Value("${gongJiangXueYuanGetImgUrl}")
private String imgBaseUrl;
@Override @Override
public boolean isAccess() { public boolean isAccess() {
System.out.println("2???????"); System.out.println("2???????");
@ -87,6 +100,22 @@ public class GuFenWeiTuoSupervise 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_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"); xgfUserService.saveLog(info, info.getSTATUS(), "1");

View File

@ -3,14 +3,21 @@ 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.GJSendMessageUtil;
import com.zcloud.flow.util.GJSendMessageUtil;
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 org.springframework.beans.factory.annotation.Value;
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 +31,13 @@ public class JiTuanSupervise extends NodeComponent {
@Resource @Resource
private XgfUserMapper xgfUserMapper; private XgfUserMapper xgfUserMapper;
@Resource
private XgfUserDetailsMapper xgfUserDetailsMapper;
@Resource
private GJSendMessageUtil gjSendMessageUtil;
@Value("${gongJiangXueYuanGetImgUrl}")
private String imgBaseUrl;
@Override @Override
public boolean isAccess() { 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("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_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"); xgfUserService.saveLog(info, info.getSTATUS(), "1");
} }

View File

@ -3,16 +3,22 @@ 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.GJSendMessageUtil;
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;
import com.zcloud.util.Jurisdiction; import com.zcloud.util.Jurisdiction;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
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 +35,13 @@ public class JiTuanWeiTuoSupervise extends NodeComponent {
@Resource @Resource
private CorpInfoMapper corpInfoMapper; private CorpInfoMapper corpInfoMapper;
@Resource
private XgfUserDetailsMapper xgfUserDetailsMapper;
@Resource
private GJSendMessageUtil gjSendMessageUtil;
@Value("${gongJiangXueYuanGetImgUrl}")
private String imgBaseUrl;
@Override @Override
public boolean isAccess() { public boolean isAccess() {
XgfFlowDto info = this.getRequestData(); XgfFlowDto info = this.getRequestData();
@ -86,7 +99,22 @@ public class JiTuanWeiTuoSupervise 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_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"); xgfUserService.saveLog(info, info.getSTATUS(), "1");
} }

View File

@ -3,16 +3,22 @@ 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.GJSendMessageUtil;
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;
import com.zcloud.util.DateUtil; import com.zcloud.util.DateUtil;
import com.zcloud.util.Jurisdiction; import com.zcloud.util.Jurisdiction;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
@LiteflowComponent("YiBanSupervise") @LiteflowComponent("YiBanSupervise")
@SuppressWarnings("all") @SuppressWarnings("all")
@ -27,8 +33,15 @@ public class YiBanSupervise extends NodeComponent {
@Resource @Resource
private XgfUserMapper xgfUserMapper; private XgfUserMapper xgfUserMapper;
@Resource
private XgfUserDetailsMapper xgfUserDetailsMapper;
@Resource
private GJSendMessageUtil gjSendMessageUtil;
@Resource @Resource
private CorpInfoMapper corpInfoMapper; private CorpInfoMapper corpInfoMapper;
@Value("${gongJiangXueYuanGetImgUrl}")
private String imgBaseUrl;
@Override @Override
public boolean isAccess() { public boolean isAccess() {
@ -118,7 +131,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_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"); xgfUserService.saveLog(info, info.getSTATUS(), "1");
} }

View File

@ -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();

View File

@ -55,7 +55,7 @@ spring.main.banner-mode=off
#web.front-path=h:/ #web.front-path=h:/
#spring.resources.static-locations=file:${web.upload-path},file:${web.front-path} #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 #qa-regulatory-gwj.api.url=http://192.168.0.79:8008
preventionxgf.api.url=http://39.100.115.58:8082/qa-prevention-xgf/ 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/ corp.default.back-end-path=https://qgqy.qhdsafety.com/file/
#用户标识 #\u7528\u6237\u6807\u8BC6
# 沧州矿石 # \u6CA7\u5DDE\u77FF\u77F3
czks-useridentity=CZKS czks-useridentity=CZKS
czks-baseimgpath=https://wwag.qhdsafety.com/file/ czks-baseimgpath=https://wwag.qhdsafety.com/file/
czks-backendaddr=http://192.168.0.79:8091/ czks-backendaddr=http://192.168.0.79:8091/
# 港务局 # \u6E2F\u52A1\u5C40
gwj-useridentity=GWJ gwj-useridentity=GWJ
gwj-baseimgpath=https://qgqy.qhdsafety.com/file/ 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/
@ -125,10 +125,20 @@ mq.czks.file.group=scheduled_tasks_czks_dockingPicture
mq.gwj.data.topic=czks_docking mq.gwj.data.topic=czks_docking
mq.gwj.file.topic=czks_dockingPicture 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 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 heBeiQinAnFile=https://file.zcloudchina.com/YTHFile
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
# \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/

View File

@ -118,22 +118,25 @@ mq.czks.data.group=scheduled_tasks_czks_docking
mq.czks.file.topic=czks_dockingPicture mq.czks.file.topic=czks_dockingPicture
mq.czks.file.group=scheduled_tasks_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/ biaoZhunShuJuKu=https://file.zcloudchina.com/
dw.url=http://192.168.192.201:8888/qa-dingWei-gwj/
#<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>ʶ #\uFFFD\u00FB\uFFFD\uFFFD\uFFFD\u02B6
# <EFBFBD><EFBFBD><EFBFBD>ݿ<EFBFBD>ʯ # \uFFFD\uFFFD\uFFFD\u077F\uFFFD\u02AF
czks-useridentity=CZKS czks-useridentity=CZKS
czks-baseimgpath=https://wwag.qhdsafety.com/file/ czks-baseimgpath=https://wwag.qhdsafety.com/file/
czks-backendaddr=http://192.168.0.79:8091/ czks-backendaddr=http://192.168.0.79:8091/
# <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> # \uFFFD\uFFFD\uFFFD\uFFFD\uFFFD
gwj-useridentity=GWJ gwj-useridentity=GWJ
gwj-baseimgpath=https://qgqy.qhdsafety.com/file/ 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
# \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/

View File

@ -119,3 +119,13 @@ 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
# \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/

View File

@ -2,9 +2,9 @@ spring.application.name=qa-prevention-gwj
server.port=8091 server.port=8091
#?? #??
spring.profiles.active=local #spring.profiles.active=local
#<EFBFBD><EFBFBD><EFBFBD><EFBFBD>31ʱʹ<EFBFBD><EFBFBD> #\uFFFD\uFFFD\uFFFD\uFFFD31\u02B1\u02B9\uFFFD\uFFFD
#spring.profiles.active=dev spring.profiles.active=dev
#?? #??
#spring.profiles.active=master #spring.profiles.active=master