diff --git a/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/constant/CacheConstants.java b/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/constant/CacheConstants.java index b1b13394..27b63fb0 100644 --- a/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/constant/CacheConstants.java +++ b/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/constant/CacheConstants.java @@ -7,6 +7,10 @@ package com.yanzhu.common.core.constant; */ public class CacheConstants { + /** + * yanzhu系统应用注册 redis key + */ + public static final String YANZHU_SYSTEM_CONFIG = "yanzhu_system_config:"; /** * 缓存有效期,默认720(分钟) diff --git a/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/enums/ApplyCfgTypeEnum.java b/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/enums/ApplyCfgTypeEnum.java new file mode 100644 index 00000000..e7ab8a55 --- /dev/null +++ b/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/enums/ApplyCfgTypeEnum.java @@ -0,0 +1,31 @@ +package com.yanzhu.common.core.enums; + +/** + * 应用配置类型 + * + * @author ruoyi + */ +public enum ApplyCfgTypeEnum { + + LABOUR("1", "劳务人员信息接入"), + AIBOXS("2", "视频智能预警接入"); + + private final String code; + private final String info; + + ApplyCfgTypeEnum(String code, String info) + { + this.code = code; + this.info = info; + } + + public String getCode() + { + return code; + } + + public String getInfo() + { + return info; + } +} diff --git a/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/enums/ShiFouEnum.java b/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/enums/ShiFouEnum.java new file mode 100644 index 00000000..0b30ca6a --- /dev/null +++ b/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/enums/ShiFouEnum.java @@ -0,0 +1,39 @@ +package com.yanzhu.common.core.enums; + + +import com.yanzhu.common.core.text.Convert; + +/** + * 是否状态 + * + * @author JiangYuQi + */ +public enum ShiFouEnum { + + FOU("0", "否"), SHI("1", "是"); + + private final String code; + private final String info; + + ShiFouEnum(String code, String info) + { + this.code = code; + this.info = info; + } + + public String getCode() + { + return code; + } + + public String getInfo() + { + return info; + } + + public Long getLongCode() + { + return Convert.toLong(code); + } + +} diff --git a/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/enums/VendorsCodeEnum.java b/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/enums/VendorsCodeEnum.java new file mode 100644 index 00000000..aa1a4974 --- /dev/null +++ b/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/enums/VendorsCodeEnum.java @@ -0,0 +1,31 @@ +package com.yanzhu.common.core.enums; + +/** + * 厂商编号类型枚举 + * + * @author ruoyi + */ +public enum VendorsCodeEnum { + + YANZHU("yanzhu", "研筑"); + + private final String code; + private final String info; + + VendorsCodeEnum(String code, String info) + { + this.code = code; + this.info = info; + } + + public String getCode() + { + return code; + } + + public String getInfo() + { + return info; + } + +} diff --git a/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/utils/Md5Utils.java b/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/utils/Md5Utils.java new file mode 100644 index 00000000..89e15c6e --- /dev/null +++ b/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/utils/Md5Utils.java @@ -0,0 +1,118 @@ +package com.yanzhu.common.core.utils; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.nio.charset.StandardCharsets; +import java.security.MessageDigest; +import java.util.List; + +public class Md5Utils { + private static final Logger log = LoggerFactory.getLogger(Md5Utils.class); + + private static byte[] md5(String s) + { + MessageDigest algorithm; + try + { + algorithm = MessageDigest.getInstance("MD5"); + algorithm.reset(); + algorithm.update(s.getBytes("UTF-8")); + byte[] messageDigest = algorithm.digest(); + return messageDigest; + } + catch (Exception e) + { + log.error("MD5 Error...", e); + } + return null; + } + + private static byte[] md5(byte[] bytes) + { + MessageDigest algorithm; + try + { + algorithm = MessageDigest.getInstance("MD5"); + algorithm.update(bytes); + byte[] messageDigest = algorithm.digest(); + return messageDigest; + } + catch (Exception e) + { + log.error("MD5 Error...", e); + } + return null; + } + + private static final String toHex(byte hash[]) + { + if (hash == null) + { + return null; + } + StringBuffer buf = new StringBuffer(hash.length * 2); + int i; + + for (i = 0; i < hash.length; i++) + { + if ((hash[i] & 0xff) < 0x10) + { + buf.append("0"); + } + buf.append(Long.toString(hash[i] & 0xff, 16)); + } + return buf.toString(); + } + + public static String hash(byte[] uploadBytes) + { + try + { + return new String(toHex(md5(uploadBytes)).getBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8); + } + catch (Exception e) + { + log.error("not supported charset...{}", e); + return null; + } + } + + public static String hash(List objs) + { + if(objs==null){ + return null; + } + String s = objs.toString(); + try + { + return new String(toHex(md5(s)).getBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8); + } + catch (Exception e) + { + log.error("not supported charset...{}", e); + return s; + } + } + + public static String hash(String s) + { + try + { + return new String(toHex(md5(s)).getBytes(StandardCharsets.UTF_8), StandardCharsets.UTF_8); + } + catch (Exception e) + { + log.error("not supported charset...{}", e); + return s; + } + } + + public static String yzMd5(String s){ + String tmp="HelloYanzhu"+s+"陕西研筑"; + tmp=hash(tmp); + tmp=tmp.substring(3,15)+"yanzhu"+tmp.substring(20)+"研筑陕西"; + tmp=hash(tmp); + return "sxyz"+tmp.substring(21,tmp.length()-3)+tmp.substring(3,14); + } +} diff --git a/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/utils/RSAUtil.java b/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/utils/RSAUtil.java new file mode 100644 index 00000000..2db55bbb --- /dev/null +++ b/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/utils/RSAUtil.java @@ -0,0 +1,356 @@ +package com.yanzhu.common.core.utils; + +import javax.crypto.Cipher; +import java.io.ByteArrayOutputStream; +import java.nio.charset.StandardCharsets; +import java.security.*; +import java.security.interfaces.RSAPrivateKey; +import java.security.interfaces.RSAPublicKey; +import java.security.spec.InvalidKeySpecException; +import java.security.spec.PKCS8EncodedKeySpec; +import java.security.spec.X509EncodedKeySpec; +import java.util.Base64; + +/** + * @description: Rsa非对称加密算法工具类 + * @author: JiangYuQi + * @date: 2024/1/13 15:14 + */ +public final class RSAUtil { + + private RSAUtil() {} + + private static final String RSA = "RSA"; + + private static final String SIGN_ALGORITHMS = "SHA1WithRSA"; + + private static final Base64.Decoder DECODER = Base64.getDecoder(); + + private static final Base64.Encoder ENCODER = Base64.getEncoder(); + + + public static void main(String[] args) throws NoSuchAlgorithmException { + // 生成密钥对 + KeyPair keyPair = getKeyPair(); + // 公匙 + String publicKey = getPublicKeyBase64(keyPair); + System.out.println("公匙 -> " + publicKey); + // 私匙 + String privateKey = getPrivateKeyBase64(keyPair); + System.out.println("私匙 -> " + privateKey); + // 明文 + String plaintext = "hello world!"; + System.out.println("明文 -> " + plaintext); + // 密文base64(公匙加密) + String ciphertext = publicKeyEncrypt(plaintext, publicKey); + System.out.println("密文base64 -> " + ciphertext); + // 解密后明文(私匙解密) + String decryptString = privateKeyDecrypt(ciphertext, privateKey); + System.out.println("解密后明文 -> " + decryptString); + // 数字签名 +// String sign = sign(ciphertext, privateKey); +// System.out.println("数字签名 -> " + decryptString); +// // 验证签名 +// boolean pass = verify(ciphertext, sign, publicKey); +// System.out.println("验证签名 -> " + pass); + } + + + /** + * 生成秘钥对 + * + * @return + * @throws Exception + */ + public static KeyPair getKeyPair() throws NoSuchAlgorithmException { + KeyPairGenerator keyPairGenerator = KeyPairGenerator.getInstance(RSA); + keyPairGenerator.initialize(1024); + return keyPairGenerator.generateKeyPair(); + } + + /** + * 获取公钥(Base64编码) + * + * @param keyPair 秘钥对 + * @return + */ + public static String getPublicKeyBase64(KeyPair keyPair) { + PublicKey publicKey = keyPair.getPublic(); + byte[] bytes = publicKey.getEncoded(); + // 先用base64编码,再转换为字符串 + return new String(ENCODER.encode(bytes), StandardCharsets.UTF_8); + } + + /** + * 获取私钥(Base64编码) + * + * @param keyPair 秘钥对 + * @return + */ + public static String getPrivateKeyBase64(KeyPair keyPair) { + PrivateKey privateKey = keyPair.getPrivate(); + byte[] bytes = privateKey.getEncoded(); + // 先用base64编码,再转换为字符串 + return new String(ENCODER.encode(bytes), StandardCharsets.UTF_8); + } + + /** + * 将Base64编码后的公钥转换成PublicKey对象 + * + * @param publicKeyBase64 公钥base64 + * @return + */ + public static PublicKey getPublicKey(String publicKeyBase64) throws NoSuchAlgorithmException, InvalidKeySpecException { + byte[] keyBytes = DECODER.decode(publicKeyBase64); + X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes); + KeyFactory keyFactory = KeyFactory.getInstance(RSA); + return keyFactory.generatePublic(keySpec); + } + + /** + * 将Base64编码后的私钥转换成PrivateKey对象 + * + * @param privateKeyBase64 私钥base64 + * @return + * @throws Exception + */ + public static PrivateKey getPrivateKey(String privateKeyBase64) throws NoSuchAlgorithmException, InvalidKeySpecException { + byte[] keyBytes = DECODER.decode((privateKeyBase64)); + PKCS8EncodedKeySpec keySpec = new PKCS8EncodedKeySpec(keyBytes); + KeyFactory keyFactory = KeyFactory.getInstance(RSA); + return keyFactory.generatePrivate(keySpec); + } + + /** + * 公钥加密 + * + * @param plaintext 明文 + * @param publicKeyBase64 公钥base64 + * @return 密文数组base64编码后的字符串 + */ + public static String publicKeyEncrypt(String plaintext, String publicKeyBase64) { + try { + // 获取明文字节数组 + byte[] bytes = plaintext.getBytes(StandardCharsets.UTF_8); + Cipher cipher = Cipher.getInstance(RSA); + // 编码前设定编码方式及密钥 + PublicKey publicKey = getPublicKey(publicKeyBase64); + cipher.init(Cipher.ENCRYPT_MODE, publicKey); + int keyBit = getKeySize(publicKey); + int inputLen = bytes.length; + ByteArrayOutputStream out = new ByteArrayOutputStream(); + int offSet = 0; + int step = keyBit / 8 - 11; + for (int i = 0; inputLen - offSet > 0; offSet = i * step) { + byte[] cache; + if (inputLen - offSet > step) { + cache = cipher.doFinal(bytes, offSet, step); + } else { + cache = cipher.doFinal(bytes, offSet, inputLen - offSet); + } + out.write(cache, 0, cache.length); + ++i; + } + // 密文字节数组 + byte[] ciphertextBytes = out.toByteArray(); + out.close(); + // 返回密文字节数组base64编码后的字符串 + return new String(ENCODER.encode(ciphertextBytes), StandardCharsets.UTF_8); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + /** + * 公钥解密 + * + * @param ciphertext 密文 + * @param publicKeyBase64 公钥base64 + * @return 明文 + */ + public static String publicKeyDecrypt(String ciphertext, String publicKeyBase64) { + try { + // 密文base64解码字节数组 + byte[] bytes = DECODER.decode(ciphertext.getBytes(StandardCharsets.UTF_8)); + Cipher cipher = Cipher.getInstance(RSA); + PublicKey publicKey = getPublicKey(publicKeyBase64); + cipher.init(Cipher.DECRYPT_MODE, publicKey); + int keyBit = getKeySize(publicKey); + int inputLen = bytes.length; + ByteArrayOutputStream out = new ByteArrayOutputStream(); + int offSet = 0; + int step = keyBit / 8; + + for (int i = 0; inputLen - offSet > 0; offSet = i * step) { + byte[] cache; + if (inputLen - offSet > step) { + cache = cipher.doFinal(bytes, offSet, step); + } else { + cache = cipher.doFinal(bytes, offSet, inputLen - offSet); + } + out.write(cache, 0, cache.length); + ++i; + } + // 明文字节数组 + byte[] plaintextBytes = out.toByteArray(); + out.close(); + return new String(plaintextBytes, StandardCharsets.UTF_8); + } catch (Exception e) { + return null; + } + } + + /** + * 私钥加密 + * + * @param plaintext 明文 + * @param privateKeyBase64 私钥base64 + * @return + */ + public static String privateKeyEncrypt(String plaintext, String privateKeyBase64) { + try { + // 获取明文字节数组 + byte[] bytes = plaintext.getBytes(StandardCharsets.UTF_8); + Cipher cipher = Cipher.getInstance(RSA); + // 编码前设定编码方式及密钥 + PrivateKey privateKey = getPrivateKey(privateKeyBase64); + cipher.init(Cipher.ENCRYPT_MODE, privateKey); + int keyBit = getKeySize(privateKey); + int inputLen = bytes.length; + ByteArrayOutputStream out = new ByteArrayOutputStream(); + int offSet = 0; + int step = keyBit / 8 - 11; + + for (int i = 0; inputLen - offSet > 0; offSet = i * step) { + byte[] cache; + if (inputLen - offSet > step) { + cache = cipher.doFinal(bytes, offSet, step); + } else { + cache = cipher.doFinal(bytes, offSet, inputLen - offSet); + } + out.write(cache, 0, cache.length); + ++i; + } + // 密文字节数组 + byte[] ciphertextBytes = out.toByteArray(); + out.close(); + // 返回密文字节数组base64编码后的字符串 + return new String(ENCODER.encode(ciphertextBytes), StandardCharsets.UTF_8); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + /** + * 私钥解密 + * + * @param ciphertext 密文 + * @param privateKeyBase64 私钥base64 + * @return 明文 + */ + public static String privateKeyDecrypt(String ciphertext, String privateKeyBase64) { + try { + // 密文base64解码字节数组 + byte[] bytes = DECODER.decode(ciphertext.getBytes(StandardCharsets.UTF_8)); + Cipher cipher = Cipher.getInstance(RSA); + PrivateKey privateKey = getPrivateKey(privateKeyBase64); + cipher.init(Cipher.DECRYPT_MODE, privateKey); + int keyBit = getKeySize(privateKey); + int inputLen = bytes.length; + ByteArrayOutputStream out = new ByteArrayOutputStream(); + int offSet = 0; + int step = keyBit / 8; + + for (int i = 0; inputLen - offSet > 0; offSet = i * step) { + byte[] cache; + if (inputLen - offSet > step) { + cache = cipher.doFinal(bytes, offSet, step); + } else { + cache = cipher.doFinal(bytes, offSet, inputLen - offSet); + } + out.write(cache, 0, cache.length); + ++i; + } + // 明文字节数组 + byte[] plaintextBytes = out.toByteArray(); + out.close(); + return new String(plaintextBytes, StandardCharsets.UTF_8); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + /** + * 使用私钥对数据进行数字签名 + * + * @param ciphertext 密文 + * @param privateKeyBase64 私钥Base64 + * @return 加密后的base64签名 + */ + public static String sign(String ciphertext, String privateKeyBase64) { + try { + // 密文字节数组 + byte[] ciphertextBytes = DECODER.decode(ciphertext.getBytes(StandardCharsets.UTF_8)); + PrivateKey privateKey = getPrivateKey(privateKeyBase64); + Signature signature = Signature.getInstance(SIGN_ALGORITHMS); + signature.initSign(privateKey); + signature.update(ciphertextBytes); + byte[] signed = signature.sign(); + return new String(ENCODER.encode(signed), StandardCharsets.UTF_8); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + /** + * 使用公钥验证数字签名 + * + * @param ciphertext 密文 + * @param sign 签名 + * @param publicKeyBase64 公钥base64 + * @return 是否篡改了数据 + */ + public static boolean verify(String ciphertext, String sign, String publicKeyBase64) { + try { + // 密文base64解码字节数组 + byte[] ciphertextBytes = DECODER.decode(ciphertext.getBytes(StandardCharsets.UTF_8)); + // 签名base64解码字节数组 + byte[] signBytes = DECODER.decode(sign.getBytes(StandardCharsets.UTF_8)); + PublicKey publicKey = getPublicKey(publicKeyBase64); + Signature signature = Signature.getInstance(SIGN_ALGORITHMS); + signature.initVerify(publicKey); + signature.update(ciphertextBytes); + return signature.verify(signBytes); + } catch (Exception e) { + e.printStackTrace(); + } + return false; + } + + /** + * 获取公钥长度 + * + * @param publicKey 公钥 + * @return + */ + public static int getKeySize(PublicKey publicKey) { + RSAPublicKey rsaPublicKey = (RSAPublicKey) publicKey; + return rsaPublicKey.getModulus().bitLength(); + } + + /** + * 获取私钥长度 + * + * @param privateKey 私钥 + * @return + */ + public static int getKeySize(PrivateKey privateKey) { + RSAPrivateKey rsaPrivateKey = (RSAPrivateKey) privateKey; + return rsaPrivateKey.getModulus().bitLength(); + } + +} \ No newline at end of file diff --git a/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/utils/file/FileUtils.java b/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/utils/file/FileUtils.java index dc292e2b..14acc086 100644 --- a/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/utils/file/FileUtils.java +++ b/yanzhu-common/yanzhu-common-core/src/main/java/com/yanzhu/common/core/utils/file/FileUtils.java @@ -1,18 +1,16 @@ package com.yanzhu.common.core.utils.file; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.OutputStream; -import java.io.UnsupportedEncodingException; +import java.io.*; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import com.yanzhu.common.core.utils.DateUtils; import com.yanzhu.common.core.utils.StringUtils; +import com.yanzhu.common.core.utils.uuid.IdUtils; import org.apache.commons.io.FilenameUtils; +import org.apache.commons.io.IOUtils; import org.apache.commons.lang3.ArrayUtils; /** @@ -104,6 +102,72 @@ public class FileUtils return flag; } + /** + * 获取图像后缀 + * + * @param photoByte 图像数据 + * @return 后缀名 + */ + public static String getFileExtendName(byte[] photoByte) + { + String strFileExtendName = "jpg"; + if ((photoByte[0] == 71) && (photoByte[1] == 73) && (photoByte[2] == 70) && (photoByte[3] == 56) + && ((photoByte[4] == 55) || (photoByte[4] == 57)) && (photoByte[5] == 97)) + { + strFileExtendName = "gif"; + } + else if ((photoByte[6] == 74) && (photoByte[7] == 70) && (photoByte[8] == 73) && (photoByte[9] == 70)) + { + strFileExtendName = "jpg"; + } + else if ((photoByte[0] == 66) && (photoByte[1] == 77)) + { + strFileExtendName = "bmp"; + } + else if ((photoByte[1] == 80) && (photoByte[2] == 78) && (photoByte[3] == 71)) + { + strFileExtendName = "png"; + } + return strFileExtendName; + } + + public static final File getAbsoluteFile(String uploadDir, String fileName) throws IOException + { + File desc = new File(uploadDir + File.separator + fileName); + + if (!desc.exists()) + { + if (!desc.getParentFile().exists()) + { + desc.getParentFile().mkdirs(); + } + } + return desc; + } + + + public static String writeBytes(byte[] data, String uploadDir,String fileName) throws IOException + { + FileOutputStream fos = null; + String pathName = ""; + try + { + String extension = getFileExtendName(data); + pathName = DateUtils.datePath() + "/" + fileName; + File file = getAbsoluteFile(uploadDir, pathName); + if(file.exists()){ + file.delete(); + } + fos = new FileOutputStream(file); + fos.write(data); + } + finally + { + IOUtils.close(fos); + } + return pathName; + } + /** * 文件名称验证 * diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/AttendanceCfg.java b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/AttendanceCfg.java index 1528e8a3..8a0b018c 100644 --- a/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/AttendanceCfg.java +++ b/yanzhu-common/yanzhu-common-mapper/src/main/java/com/yanzhu/manage/domain/AttendanceCfg.java @@ -50,7 +50,26 @@ public class AttendanceCfg extends BaseEntity this.id = id; } - public Long getId() + private Long deptId; + private String deptName; + + public Long getDeptId() { + return deptId; + } + + public void setDeptId(Long deptId) { + this.deptId = deptId; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public Long getId() { return id; } diff --git a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/AttendanceCfgMapper.xml b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/AttendanceCfgMapper.xml index 3fbb41d8..2a6f6b28 100644 --- a/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/AttendanceCfgMapper.xml +++ b/yanzhu-common/yanzhu-common-mapper/src/main/resources/mapper/manage/AttendanceCfgMapper.xml @@ -7,6 +7,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + @@ -19,16 +20,18 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" + SELECT ac.id, ac.com_id, ac.project_id, ac.vendors_code, ac.vendors_parameter, ac.enabled, ac.state, ac.remark, ac.is_del, ac.create_by, ac.create_time, ac.update_by - , ac.update_time,dp.`dept_name` comp_name,pp.`project_name`,dic.`dict_label` vendors_name + , ac.update_time,dp.`dept_name` comp_name,pp.`project_name`,dic.`dict_label` vendors_name,sd.sub_dept_name dept_name,ac.dept_id FROM attendance_cfg ac LEFT JOIN sys_dept dp ON ac.`com_id`=dp.`dept_id` LEFT JOIN pro_project_info pp ON ac.`project_id`=pp.`id` + left join pro_project_info_subdepts sd on ac.dept_id=sd.id LEFT JOIN sys_dict_data dic ON ac.`vendors_code`=dic.`dict_value` AND dic.`dict_type`='attendance_vendors' @@ -54,6 +57,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" insert into attendance_cfg com_id, + dept_id, project_id, vendors_code, vendors_parameter, @@ -68,6 +72,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" #{comId}, + #{deptId}, #{projectId}, #{vendorsCode}, #{vendorsParameter}, @@ -86,6 +91,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" update attendance_cfg com_id = #{comId}, + dept_id = #{deptId}, project_id = #{projectId}, vendors_code = #{vendorsCode}, vendors_parameter = #{vendorsParameter}, diff --git a/yanzhu-modules/yanzhu-job/pom.xml b/yanzhu-modules/yanzhu-job/pom.xml index 3f990b9e..d64e84af 100644 --- a/yanzhu-modules/yanzhu-job/pom.xml +++ b/yanzhu-modules/yanzhu-job/pom.xml @@ -77,7 +77,13 @@ com.yanzhu yanzhu-common-swagger - + + + cn.hutool + hutool-http + 5.8.20 + + diff --git a/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/config/ResourcesConfig.java b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/config/ResourcesConfig.java new file mode 100644 index 00000000..81ecdf47 --- /dev/null +++ b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/config/ResourcesConfig.java @@ -0,0 +1,55 @@ +package com.yanzhu.job.config; + +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.CorsRegistry; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +import java.io.File; + +/** + * 通用映射配置 + * + * @author ruoyi + */ +@Configuration +public class ResourcesConfig implements WebMvcConfigurer +{ + /** + * 上传文件存储在本地的根路径 + */ + @Value("${file.path}") + private String localFilePath; + + /** + * 资源映射路径 前缀 + */ + @Value("${file.prefix}") + public String localFilePrefix; + + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) + { + /** 本地文件上传路径 */ + registry.addResourceHandler(localFilePrefix + "/**") + .addResourceLocations("file:" + localFilePath + File.separator); + } + + /** + * 开启跨域 + */ + @Override + public void addCorsMappings(CorsRegistry registry) { + // 设置允许跨域的路由 + registry.addMapping(localFilePrefix + "/**") + // 设置允许跨域请求的域名 + .allowedOrigins("*") + // 设置允许的方法 + .allowedMethods("GET"); + } + + public String getUploadPath(){ + return (localFilePath+"/upload/").replaceAll("//","/"); + } +} \ No newline at end of file diff --git a/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/domain/QuartzProjectAttendanceCfg.java b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/domain/QuartzProjectAttendanceCfg.java new file mode 100644 index 00000000..9e6da397 --- /dev/null +++ b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/domain/QuartzProjectAttendanceCfg.java @@ -0,0 +1,189 @@ +package com.yanzhu.job.domain; + + +import com.yanzhu.common.core.annotation.Excel; +import com.yanzhu.common.core.web.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +/** + * 项目考勤配置对象 sur_project_attendance_cfg + * + * @author ruoyi + * @date 2023-09-24 + */ +public class QuartzProjectAttendanceCfg extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键 */ + private Long id; + + /** 公司主键 */ + @Excel(name = "公司主键") + private Long comId; + + /** 分包单位 */ + @Excel(name = "分包单位") + private Long projectId; + + /** 厂商编号(参考字典attendance_vendors) */ + @Excel(name = " 厂商编号(参考字典attendance_vendors)") + private String vendorsCode; + + /** 厂商参数 */ + @Excel(name = "厂商参数") + private String vendorsParameter; + + /** 1-启用,0-停用 */ + @Excel(name = "1-启用,0-停用") + private Long enabled; + + /** 状态 */ + @Excel(name = "状态") + private Long state; + + private Long deptId; + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public Long getDeptId() { + return deptId; + } + + public void setDeptId(Long deptId) { + this.deptId = deptId; + } + + private String deptName; + + /** $column.columnComment */ + @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + private Long isDel; + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + public void setComId(Long comId) + { + this.comId = comId; + } + + public Long getComId() + { + return comId; + } + public void setProjectId(Long projectId) + { + this.projectId = projectId; + } + + public Long getProjectId() + { + return projectId; + } + public void setVendorsCode(String vendorsCode) + { + this.vendorsCode = vendorsCode; + } + + public String getVendorsCode() + { + return vendorsCode; + } + public void setVendorsParameter(String vendorsParameter) + { + this.vendorsParameter = vendorsParameter; + } + + public String getVendorsParameter() + { + return vendorsParameter; + } + public void setEnabled(Long enabled) + { + this.enabled = enabled; + } + + public Long getEnabled() + { + return enabled; + } + public void setState(Long state) + { + this.state = state; + } + + public Long getState() + { + return state; + } + public void setIsDel(Long isDel) + { + this.isDel = isDel; + } + + public Long getIsDel() + { + return isDel; + } + + private String compName; + private String projectName; + private String vendorsName; + public String getProjectName() { + return projectName; + } + + public void setProjectName(String projectName) { + this.projectName = projectName; + } + + public String getVendorsName() { + return vendorsName; + } + + public void setVendorsName(String vendorsName) { + this.vendorsName = vendorsName; + } + + public String getCompName() { + return compName; + } + + public void setCompName(String compName) { + this.compName = compName; + } + + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("comId", getComId()) + .append("projectId", getProjectId()) + .append("vendorsCode", getVendorsCode()) + .append("vendorsParameter", getVendorsParameter()) + .append("enabled", getEnabled()) + .append("state", getState()) + .append("remark", getRemark()) + .append("isDel", getIsDel()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .toString(); + } +} diff --git a/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/domain/QuartzProjectAttendanceData.java b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/domain/QuartzProjectAttendanceData.java new file mode 100644 index 00000000..0342c87a --- /dev/null +++ b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/domain/QuartzProjectAttendanceData.java @@ -0,0 +1,512 @@ +package com.yanzhu.job.domain; + +import cn.hutool.core.date.DateTime; +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson2.JSONObject; +import com.yanzhu.common.core.annotation.Excel; +import com.yanzhu.common.core.web.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +/** + * 劳务实名制管理对象 sur_project_attendance_data + * + * @author ruoyi + * @date 2023-09-24 + */ +public class QuartzProjectAttendanceData extends BaseEntity +{ + public QuartzProjectAttendanceData(){ + this.year= DateTime.now().year(); + } + private static final long serialVersionUID = 1L; + + private int year; + + public int getYear() { + return year; + } + + public void setYear(int year) { + this.year = year; + } + + public String getProjectName() { + return projectName; + } + + public void setProjectName(String projectName) { + this.projectName = projectName; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public String getWorkerName() { + return workerName; + } + + public void setWorkerName(String workerName) { + this.workerName = workerName; + } + + public String getWorkerPhoto() { + return workerPhoto; + } + + public void setWorkerPhoto(String workerPhoto) { + this.workerPhoto = workerPhoto; + } + + public Long getWorkerGender() { + return workerGender; + } + + public void setWorkerGender(Long workerGender) { + this.workerGender = workerGender; + } + + public Long getBirthDate() { + return birthDate; + } + + public void setBirthDate(Long birthDate) { + this.birthDate = birthDate; + } + + public String getGroupName() { + return groupName; + } + + public void setGroupName(String groupName) { + this.groupName = groupName; + } + + public String getWorkTypeName() { + return workTypeName; + } + + public void setWorkTypeName(String workTypeName) { + this.workTypeName = workTypeName; + } + + public String getEthnic() { + return ethnic; + } + + public void setEthnic(String ethnic) { + this.ethnic = ethnic; + } + + public String getNativePlace() { + return nativePlace; + } + + public void setNativePlace(String nativePlace) { + this.nativePlace = nativePlace; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public Integer getSpecWorkType() { + return specWorkType; + } + + public void setSpecWorkType(Integer specWorkType) { + this.specWorkType = specWorkType; + } + + public String getCompanyName() { + return companyName; + } + + public void setCompanyName(String companyName) { + this.companyName = companyName; + } + + public String getAttendanceOutTime() { + return attendanceOutTime; + } + + public void setAttendanceOutTime(String attendanceOutTime) { + this.attendanceOutTime = attendanceOutTime; + } + + + private Long projectId; + @Excel(name = "项目名称") + private String projectName; + + private Long deptId; + @Excel(name = "部门名称") + private String deptName; + @Excel(name = "姓名") + private String workerName; + + private String workerPhoto; + @Excel(name = "性别0:男 1:女") + private Long workerGender; + + private Long birthDate; + @Excel(name = "所属班组") + private String groupName; + @Excel(name = "工种") + private String workTypeName; + @Excel(name = "民族") + private String ethnic; + @Excel(name = "籍贯") + private String nativePlace; + + @Excel(name = "联系电话") + private String phone; + @Excel(name = "是否特殊工种") + private Integer specWorkType; + + private String companyTypeId; + @Excel(name = "分包商名称") + private String companyName; + + private String workerId; + + /** 考勤时间yyyy-MM-dd HH:mm:ss */ + @Excel(name = "考勤时间(进场)") + private String attendanceTime; + + @Excel(name = "考勤时间(离开)") + private String attendanceOutTime; + /** 身份证号 */ + @Excel(name = "身份证号") + private String identification; + + /** */ + private Long id; + + /** 配置项ID,可以获取项目ID和总包ID */ + private Long cfgid; + + /** 注册应用ID */ + private String appId; + + /** 厂商编号参考字典attendance_vendors */ + private String vendorsCode; + + /** 服务端ID */ + private String serverid; + + /** 队伍id */ + private Long teamId; + + /** 工种编码 */ + private String workTypeCode; + + /** 分包商id */ + private String companyId; + + /** 平台对应分包商ID */ + private Long vendorId; + + /** 设备编号 */ + private String deviceCode; + + /** 照片 */ + private String scanPhoto; + + /** */ + private Long isDel; + + private Long subDeptId; + + /** 重要::yanzhu接口接收base64图片 */ + private String scanPhotoBase64; + + /** 重要::yanzhu出门进门逻辑判断 */ + private String attendanceType; + + public String getScanPhotoBase64() { + return scanPhotoBase64; + } + + public void setScanPhotoBase64(String scanPhotoBase64) { + this.scanPhotoBase64 = scanPhotoBase64; + } + + public String getAttendanceType() { + return attendanceType; + } + + public void setAttendanceType(String attendanceType) { + this.attendanceType = attendanceType; + } + + public static QuartzProjectAttendanceData createFromHuazhu(JSONObject j) { + QuartzProjectAttendanceData d=new QuartzProjectAttendanceData(); + d.vendorsCode="huazhu"; + d.serverid=j.getString("id"); + d.workerId=j.getString("labourWorkerId"); + long recordTime=j.getLongValue("recordTime",0); + if(recordTime>0){ + if(j.getIntValue("inOrOut",1)==1){ + d.setRemark("E"); + }else{ + d.setRemark("L"); + } + d.attendanceTime= DateUtil.format(DateUtil.date(recordTime),"yyyy-MM-dd HH:mm:ss"); + } + d.identification=j.getString("idCardNo"); + d.teamId=j.getLongValue("teamId",0); + d.workTypeCode=j.getString("workerTypeId"); + d.companyId=j.getString("unitId"); + d.deviceCode=j.getString("deviceNo"); + return d; + } + + public static QuartzProjectAttendanceData createFromJgw(JSONObject j) { + QuartzProjectAttendanceData d=new QuartzProjectAttendanceData(); + d.vendorsCode="jgw"; + d.serverid=j.getString("id"); + d.workerId=j.getString("workerId"); + if("2".equals(j.getString("machineType"))){ + d.setRemark("E"); + }else{ + d.setRemark("L"); + } + d.attendanceTime = j.getString("checkinTime"); + + d.teamId=0l; + d.workTypeCode=""; + d.companyId=j.getString("subcontractorId"); + d.deviceCode=j.getString("deviceSerialNo"); + d.isDel=0l; + return d; + } + + public Long getDeptId() { + return deptId; + } + + public void setDeptId(Long deptId) { + this.deptId = deptId; + } + + + public Long getProjectId() { + return projectId; + } + + public void setProjectId(Long projectId) { + this.projectId = projectId; + } + + public Long getSubDeptId() { + return subDeptId; + } + + public void setSubDeptId(Long subDeptId) { + this.subDeptId = subDeptId; + } + + public String getCompanyTypeId() { + return companyTypeId; + } + + public void setCompanyTypeId(String companyTypeId) { + this.companyTypeId = companyTypeId; + } + + public static QuartzProjectAttendanceData create(JSONObject json) { + QuartzProjectAttendanceData d=new QuartzProjectAttendanceData(); + d.attendanceTime=json.getString("time"); + if("E".equals(json.getString("type"))){ + d.setRemark("E"); + }else{ + d.setRemark("L"); + } + d.serverid=json.getString("id"); + d.workerId=json.getString("workerId"); + d.identification=json.getString("identification"); + d.teamId=json.getLong("teamId"); + d.workTypeCode=json.getString("workerTypeId"); + d.companyId=json.getString("companyId"); + d.vendorId=json.getLong("vendorId"); + d.deviceCode=json.getString("deviceCode"); + d.scanPhoto=json.getString("scanPhoto"); + d.isDel=0l; + return d; + } + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + public void setCfgid(Long cfgid) + { + this.cfgid = cfgid; + } + + public Long getCfgid() + { + return cfgid; + } + public void setVendorsCode(String vendorsCode) + { + this.vendorsCode = vendorsCode; + } + + public String getVendorsCode() + { + return vendorsCode; + } + public void setServerid(String serverid) + { + this.serverid = serverid; + } + + public String getServerid() + { + return serverid; + } + public void setWorkerId(String workerId) + { + this.workerId = workerId; + } + + public String getWorkerId() + { + return workerId; + } + + public void setAttendanceTime(String attendanceTime) + { + this.attendanceTime = attendanceTime; + } + + public String getAttendanceTime() + { + return attendanceTime; + } + public void setIdentification(String identification) + { + this.identification = identification; + } + + public String getIdentification() + { + return identification; + } + public void setTeamId(Long teamId) + { + this.teamId = teamId; + } + + public Long getTeamId() + { + return teamId; + } + public void setWorkTypeCode(String workTypeCode) + { + this.workTypeCode = workTypeCode; + } + + public String getWorkTypeCode() + { + return workTypeCode; + } + public void setCompanyId(String companyId) + { + this.companyId = companyId; + } + + public String getCompanyId() + { + return companyId; + } + public void setVendorId(Long vendorId) + { + this.vendorId = vendorId; + } + + public Long getVendorId() + { + return vendorId; + } + + public void setDeviceCode(String deviceCode) + { + this.deviceCode = deviceCode; + } + + public String getDeviceCode() + { + return deviceCode; + } + + + public void setScanPhoto(String scanPhoto) + { + this.scanPhoto = scanPhoto; + } + + public String getScanPhoto() + { + return scanPhoto; + } + + public void setIsDel(Long isDel) + { + this.isDel = isDel; + } + + public Long getIsDel() + { + return isDel; + } + + public String getAppId() { + return appId; + } + + public void setAppId(String appId) { + this.appId = appId; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("cfgid", getCfgid()) + .append("vendorsCode", getVendorsCode()) + .append("serverid", getServerid()) + .append("workerId", getWorkerId()) + .append("attendanceTime", getAttendanceTime()) + .append("identification", getIdentification()) + .append("teamId", getTeamId()) + .append("workTypeCode", getWorkTypeCode()) + .append("companyId", getCompanyId()) + .append("vendorId", getVendorId()) + .append("deviceCode", getDeviceCode()) + .append("scanPhoto", getScanPhoto()) + .append("remark", getRemark()) + .append("isDel", getIsDel()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .toString(); + } +} diff --git a/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/domain/QuartzProjectAttendanceGroup.java b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/domain/QuartzProjectAttendanceGroup.java new file mode 100644 index 00000000..a84f3463 --- /dev/null +++ b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/domain/QuartzProjectAttendanceGroup.java @@ -0,0 +1,429 @@ +package com.yanzhu.job.domain; + +import com.alibaba.fastjson2.JSONObject; +import com.yanzhu.common.core.annotation.Excel; +import com.yanzhu.common.core.web.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +/** + * 广联达班组信息对象 sur_project_attendance_group + * + * @author ruoyi + * @date 2023-09-26 + */ +public class QuartzProjectAttendanceGroup extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** id */ + private Long id; + + /** cfgid */ + @Excel(name = "cfgid") + private Long cfgid; + + /** 注册应用ID */ + @Excel(name = "注册应用ID") + private String appId; + + /** 服务器主键id */ + @Excel(name = "服务器主键id") + private String serverid; + + /** 营业执照号 */ + @Excel(name = "营业执照号") + private String bizLicense; + + /** 分包商统一社会信用代码 */ + @Excel(name = "分包商统一社会信用代码") + private String companyCode; + + /** 分包商ID */ + @Excel(name = "分包商ID") + private String companyId; + + /** 分包商名称 */ + @Excel(name = "分包商名称") + private String companyName; + + /** 分包商类型 */ + @Excel(name = "分包商类型") + private String companyTypeId; + + /** 平台对应分包商ID */ + @Excel(name = "平台对应分包商ID") + private Long vendorId; + + /** 班组名称 */ + @Excel(name = "班组名称") + private String name; + + /** 班组长名称 */ + @Excel(name = "班组长名称") + private String leaderName; + + /** 班组长电话 */ + @Excel(name = "班组长电话") + private String leaderPhone; + + /** 队伍Id */ + @Excel(name = "队伍Id") + private Long teamId; + + /** 队伍名称 */ + @Excel(name = "队伍名称") + private String teamName; + + /** 班组类型0:建筑工人班组;1:管理人员班组 */ + @Excel(name = "班组类型0:建筑工人班组;1:管理人员班组") + private Long type; + + /** 班组长对应的工人ID */ + @Excel(name = "班组长对应的工人ID") + private Long leaderId; + + /** 是否删除 */ + @Excel(name = "是否删除") + private Integer deleted; + + /** 基础平台对应班组ID */ + @Excel(name = "基础平台对应班组ID") + private Long platformGroupId; + + /** 基础平台对应队伍ID */ + @Excel(name = "基础平台对应队伍ID") + private Long platformTeamId; + + /** 企业进场日期 */ + @Excel(name = "企业进场日期") + private Long enterDate; + + /** 企业退场日期 */ + @Excel(name = "企业退场日期") + private Long exitDate; + + /** 是否有效 */ + @Excel(name = "是否有效") + private Long isDel; + + /** 时间戳 */ + @Excel(name = "时间戳") + private Long createTimestamp; + + public static QuartzProjectAttendanceGroup createHuazhu(JSONObject j) { + QuartzProjectAttendanceGroup g=new QuartzProjectAttendanceGroup(); + g.companyId=""+j.getLongValue("unitId",0); + g.companyName=j.getString("unitName"); + g.companyTypeId=j.getString("unitType"); + g.serverid=j.getString("id"); + g.enterDate=j.getLong("enterTime"); + g.exitDate=j.getLong("leaveTime"); + g.isDel=0l; + return g; + } + + public static QuartzProjectAttendanceGroup createJgw(JSONObject j, boolean isDirectlyUnder) { + QuartzProjectAttendanceGroup g=new QuartzProjectAttendanceGroup(); + g.serverid=j.getString("id"); + if(isDirectlyUnder) { + g.companyId = j.getString("leaderTeamId"); + g.leaderName=j.getString("subcontractorId"); + g.leaderPhone="directly"; + }else{ + g.companyId=j.getString("subcontractorId"); + } + g.companyName=j.getString("corpName"); + g.teamName=j.getString("teamName"); + + g.bizLicense=j.getString("corpCode"); + g.companyCode=j.getString("teamJobtype"); + + g.companyTypeId="0"; + g.enterDate=0l; + g.exitDate=0l; + g.isDel=0l; + return g; + } + + public Long getCreateTimestamp() { + return createTimestamp; + } + + public void setCreateTimestamp(Long createTimestamp) { + this.createTimestamp = createTimestamp; + } + + public static QuartzProjectAttendanceGroup create(JSONObject json) { + QuartzProjectAttendanceGroup g=new QuartzProjectAttendanceGroup(); + g.serverid=json.getString("id"); + g.bizLicense=json.getString("bizLicense"); + g.companyCode=json.getString("companyCode"); + g.companyId=""+json.getLongValue("companyId",0); + g.companyName=json.getString("companyName"); + String typeId=json.getString("companyTypeId"); + if("1".equals(typeId)||"8".equals(typeId)||"9".equals(typeId)){ + typeId=typeId; + }else{ + typeId="2"; + } + g.companyTypeId=typeId; + g.vendorId=json.getLongValue("vendorId",0); + g.name=json.getString("name"); + g.leaderName=json.getString("leaderName"); + g.leaderPhone=json.getString("leaderPhone"); + g.teamId=json.getLongValue("teamId",0); + g.teamName=json.getString("teamName"); + g.type=json.getLongValue("type",0); + g.leaderId=json.getLongValue("leaderId",0); + g.deleted=json.get("deleted")==null?0:(json.getBoolean("deleted")?1:0); + g.platformGroupId=json.getLongValue("platformGroupId",0); + g.platformTeamId=json.getLongValue("platformTeamId",0); + g.enterDate=json.getLongValue("enterDate",0); + g.exitDate=json.getLongValue("exitDate",0); + g.isDel=0l; + return g; + + } + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + public void setCfgid(Long cfgid) + { + this.cfgid = cfgid; + } + + public Long getCfgid() + { + return cfgid; + } + public void setServerid(String serverid) + { + this.serverid = serverid; + } + + public String getServerid() + { + return serverid; + } + public void setBizLicense(String bizLicense) + { + this.bizLicense = bizLicense; + } + + public String getBizLicense() + { + return bizLicense; + } + public void setCompanyCode(String companyCode) + { + this.companyCode = companyCode; + } + + public String getCompanyCode() + { + return companyCode; + } + public void setCompanyId(String companyId) + { + this.companyId = companyId; + } + + public String getCompanyId() + { + return companyId; + } + public void setCompanyName(String companyName) + { + this.companyName = companyName; + } + + public String getCompanyName() + { + return companyName; + } + public void setCompanyTypeId(String companyTypeId) + { + this.companyTypeId = companyTypeId; + } + + public String getCompanyTypeId() + { + return companyTypeId; + } + public void setVendorId(Long vendorId) + { + this.vendorId = vendorId; + } + + public Long getVendorId() + { + return vendorId; + } + public void setName(String name) + { + this.name = name; + } + + public String getName() + { + return name; + } + public void setLeaderName(String leaderName) + { + this.leaderName = leaderName; + } + + public String getLeaderName() + { + return leaderName; + } + public void setLeaderPhone(String leaderPhone) + { + this.leaderPhone = leaderPhone; + } + + public String getLeaderPhone() + { + return leaderPhone; + } + public void setTeamId(Long teamId) + { + this.teamId = teamId; + } + + public Long getTeamId() + { + return teamId; + } + public void setTeamName(String teamName) + { + this.teamName = teamName; + } + + public String getTeamName() + { + return teamName; + } + public void setType(Long type) + { + this.type = type; + } + + public Long getType() + { + return type; + } + public void setLeaderId(Long leaderId) + { + this.leaderId = leaderId; + } + + public Long getLeaderId() + { + return leaderId; + } + public void setDeleted(Integer deleted) + { + this.deleted = deleted; + } + + public Integer getDeleted() + { + return deleted; + } + public void setPlatformGroupId(Long platformGroupId) + { + this.platformGroupId = platformGroupId; + } + + public Long getPlatformGroupId() + { + return platformGroupId; + } + public void setPlatformTeamId(Long platformTeamId) + { + this.platformTeamId = platformTeamId; + } + + public Long getPlatformTeamId() + { + return platformTeamId; + } + public void setEnterDate(Long enterDate) + { + this.enterDate = enterDate; + } + + public Long getEnterDate() + { + return enterDate; + } + public void setExitDate(Long exitDate) + { + this.exitDate = exitDate; + } + + public Long getExitDate() + { + return exitDate; + } + public void setIsDel(Long isDel) + { + this.isDel = isDel; + } + + public Long getIsDel() + { + return isDel; + } + + public String getAppId() { + return appId; + } + + public void setAppId(String appId) { + this.appId = appId; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("cfgid", getCfgid()) + .append("serverid", getServerid()) + .append("bizLicense", getBizLicense()) + .append("companyCode", getCompanyCode()) + .append("companyId", getCompanyId()) + .append("companyName", getCompanyName()) + .append("companyTypeId", getCompanyTypeId()) + .append("vendorId", getVendorId()) + .append("name", getName()) + .append("leaderName", getLeaderName()) + .append("leaderPhone", getLeaderPhone()) + .append("teamId", getTeamId()) + .append("teamName", getTeamName()) + .append("type", getType()) + .append("leaderId", getLeaderId()) + .append("deleted", getDeleted()) + .append("createTimestamp", getCreateTimestamp()) + .append("platformGroupId", getPlatformGroupId()) + .append("platformTeamId", getPlatformTeamId()) + .append("enterDate", getEnterDate()) + .append("exitDate", getExitDate()) + .append("remark", getRemark()) + .append("isDel", getIsDel()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .toString(); + } +} diff --git a/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/domain/QuartzProjectAttendanceUser.java b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/domain/QuartzProjectAttendanceUser.java new file mode 100644 index 00000000..dd9589bf --- /dev/null +++ b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/domain/QuartzProjectAttendanceUser.java @@ -0,0 +1,733 @@ +package com.yanzhu.job.domain; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import com.yanzhu.common.core.annotation.Excel; +import com.yanzhu.common.core.web.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +import java.util.Date; +import java.util.List; + +/** + * 考勤人员基本属性对象 sur_project_attendance_user + * + * @author ruoyi + * @date 2023-09-24 + */ +public class QuartzProjectAttendanceUser extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + + /** */ + private Long id; + + /** 配置项ID,可以获取项目ID和总包ID */ + + private Long cfgid; + + /** 注册应用ID */ + + private String appId; + + /** 厂商编号参考字典attendance_vendors */ + + private String vendorsCode; + + /** 工人id */ + @Excel(name = "工人id") + private String workerId; + + /** 项目工人履历id对于旧劳务,这个字段相当于工人的projectWorkerId,管理人员的registerManagerId */ + + private Long laborWorkerId; + + /** 人员类别0:工人,1:管理人员 */ + @Excel(name = "人员类别0:工人,1:管理人员") + private Long workerCategory; + + /** 工号 */ + + private Long qrCode; + + /** 姓名 */ + @Excel(name = "姓名") + private String name; + + /** 民族 */ + @Excel(name = "民族") + private String ethnic; + + /** 籍贯 */ + @Excel(name = "籍贯") + private String nativePlace; + + /** 性别0:男 1:女 */ + @Excel(name = "性别0:男 1:女") + private Long gender; + + /** 出生日期时间戳 */ + @Excel(name = "出生日期时间戳") + private Long birthDate; + + /** 联系电话 */ + @Excel(name = "联系电话") + private String phone; + + /** 学历 */ + @Excel(name = "学历") + private String degreeName; + + /** 身份证照 */ + @Excel(name = "身份证照") + private String photo; + + /** 近照 */ + + private String recentPhoto; + + /** 所属班组ID */ + + private String groupId; + + /** 所属班组 */ + @Excel(name = "所属班组") + private String groupName; + + /** 是否班组长 */ + @Excel(name = "是否班组长") + private Integer leader; + + /** 工种编码 */ + @Excel(name = "工种编码") + private String workTypeCode; + + /** 工种 */ + @Excel(name = "工种") + private String workTypeName; + + /** 是否特殊工种 */ + @Excel(name = "是否特殊工种") + private Integer specWorkType; + + /** 安全帽编号 */ + @Excel(name = "安全帽编号") + private String hatCode; + + /** 进退场状态0:进场,1:退场 */ + @Excel(name = "进退场状态0:进场,1:退场") + private Long state; + + /** 进场日期 */ + @Excel(name = "进场日期") + private String enterDate; + + /** 退场日期 */ + @Excel(name = "退场日期") + private String exitDate; + + /** 分包商id */ + @Excel(name = "分包商id") + private String companyId; + + /** 分包商名称 */ + @Excel(name = "分包商名称") + private String companyName; + + /** 平台对应分包商ID */ + @Excel(name = "平台对应分包商ID") + private Long vendorId; + + /** 队伍id */ + @Excel(name = "队伍id") + private Integer teamId; + + /** 队伍名称 */ + @Excel(name = "队伍名称") + private String teamName; + + /** 进场方式0:自动,1:手动2:拍照 */ + @Excel(name = "进场方式0:自动,1:手动2:拍照") + private String enterType; + + /** 服务返回的JSON */ + @Excel(name = "服务返回的JSON") + private String other; + + /** 是否有效 */ + @Excel(name = "是否有效") + private Long isDel; + + /** 人员部门类型 */ + @Excel(name = "人员部门类型") + private String companyTypeId; + + /** 重要::yanzhu接口接收base64图片 */ + private String recentPhotoBase64; + + public String getRecentPhotoBase64() { + return recentPhotoBase64; + } + + public void setRecentPhotoBase64(String recentPhotoBase64) { + this.recentPhotoBase64 = recentPhotoBase64; + } + + @Excel(name = "进场时间") + private Date inTime; + @Excel(name = "离场时间") + private Date outTime; + + public static QuartzProjectAttendanceUser createFromHuazhu(JSONObject j) { + QuartzProjectAttendanceUser u=new QuartzProjectAttendanceUser(); + u.workerId=j.getString("id"); + u.name=j.getString("name"); + u.ethnic=j.getString("nationalName"); + u.nativePlace=j.getString("provinceName")+j.getString("cityName"); + u.gender=j.getLongValue("sex",0)==0l?1l:0l; + u.birthDate=j.getLongValue("birthday",0); + u.phone=j.getString("phone"); + u.degreeName=j.getString("levelOfEducation"); + u.recentPhoto=j.getString("profile"); + u.groupId=j.getString("teamId"); + u.groupName=j.getString("teamName"); + u.workTypeCode=j.getString("workerTypeId"); + u.workTypeName=j.getString("workerTypeName"); + u.state=j.getLongValue("status",1)==2l?0l:1l; + long enterTime=j.getLong("enterTime"); + if(enterTime>0){ + u.enterDate= DateUtil.format(DateUtil.date(enterTime),"yyyy-MM-dd HH:mm:ss"); + } + long leaveTime=j.getLong("leaveTime"); + if(leaveTime>0) { + u.exitDate = DateUtil.format(DateUtil.date(leaveTime), "yyyy-MM-dd HH:mm:ss"); + } + u.vendorId=j.getLongValue("unitProjectId",0); + u.companyId=""+j.getLongValue("unitId",0); + u.companyName=j.getString("unitName"); + u.teamName=j.getString("teamName"); + return u; + } + + public static QuartzProjectAttendanceUser createFromJgw(JSONObject j) { + QuartzProjectAttendanceUser u=new QuartzProjectAttendanceUser(); + u.workerId=j.getString("workerId"); + u.name=j.getString("name"); + u.ethnic=j.getString("minor"); + u.phone=j.getString("workPhone"); + u.nativePlace=j.getString("address"); + u.gender=j.getLongValue("sex",0)==0l?1l:0l; + String tmp=j.getString("birthday"); + if(StrUtil.isNotEmpty(tmp)) { + try { + u.birthDate = DateUtil.parse(tmp).getTime(); + }catch (Exception ex){ + + } + } + u.photo=j.getString("headImage"); + u.degreeName=j.getString("education"); + u.recentPhoto=j.getString("vaildPhoto"); + u.groupId=""; + u.groupName=""; + u.workTypeCode=""; + u.workTypeName=j.getString("jobtype"); + u.state="01".equals( j.getString("workerStatus"))?0l:1l; + String workDate=j.getString("workDate"); + if(!StrUtil.isEmpty(workDate)){ + u.enterDate=workDate; + } + u.vendorId=0l; + u.companyId=j.getString("subcontractorId"); + u.companyName=""; + u.teamName=""; + u.isDel=0l; + JSONArray ja=j.getJSONArray("corpName"); + if(ja!=null && ja.size()>0){ + Object obj=ja.get(0); + if(obj!=null){ + u.companyName=obj.toString(); + } + } + + u.leader=j.getInteger("isAdmin")==1?1:0; + return u; + } + + public Date getInTime() { + return inTime; + } + + public void setInTime(Date inTime) { + this.inTime = inTime; + } + + public Date getOutTime() { + return outTime; + } + + public void setOutTime(Date outTime) { + this.outTime = outTime; + } + + private Long projectId; + private Long subDeptId; + private Long deptId; + + private List workerIds; + + public List getWorkerIds() { + return workerIds; + } + + public void setWorkerIds(List workerIds) { + this.workerIds = workerIds; + } + + private int size; + + public int getSize() { + return size; + } + + public void setSize(int size) { + this.size = size; + } + + public int getIndex() { + return index; + } + + public void setIndex(int index) { + this.index = index; + } + + private int index; + public Long getProjectId() { + return projectId; + } + + public void setProjectId(Long projectId) { + this.projectId = projectId; + } + + public Long getSubDeptId() { + return subDeptId; + } + + public void setSubDeptId(Long subDeptId) { + this.subDeptId = subDeptId; + } + + public Long getDeptId() { + return deptId; + } + + public void setDeptId(Long deptId) { + this.deptId = deptId; + } + + public static QuartzProjectAttendanceUser create(JSONObject json) { + QuartzProjectAttendanceUser u=new QuartzProjectAttendanceUser(); + u.workerId=json.getString("workerId"); + u.laborWorkerId=json.getLongValue("laborWorkerId",0); + u.workerCategory=json.getLongValue("workerCategory",0); + u.qrCode=json.getLongValue("qrCode",0); + u.name=json.getString("name"); + u.ethnic=json.getString("ethnic"); + u.nativePlace=json.getString("nativePlace"); + u.gender=json.getLongValue("gender",0); + u.birthDate=json.getLongValue("birthDate",0); + u.phone=json.getString("phone"); + u.recentPhoto=json.getString("recentPhoto"); + u.groupId=json.getString("groupId"); + u.groupName=json.getString("groupName"); + u.leader=json.getBooleanValue("leader",false)?1:0; + u.workTypeCode=json.getString("workTypeCode"); + u.workTypeName=json.getString("workTypeName"); + u.specWorkType=json.getBooleanValue("specWorkType",false)?1:0; + u.hatCode=json.getString("hatCode"); + u.state=json.getLongValue("status",0); + u.enterDate=json.getString("enterDate"); + u.exitDate=json.getString("exitDate"); + u.companyId=""+json.getLongValue("companyId",0); + u.companyName=json.getString("companyName"); + u.vendorId=json.getLongValue("vendorId",0); + u.teamId=json.getInteger("teamId"); + u.teamName=json.getString("teamName"); + u.enterType=json.getString("enterType"); + u.isDel=0l; + return u; + } + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + public void setCfgid(Long cfgid) + { + this.cfgid = cfgid; + } + + public Long getCfgid() + { + return cfgid; + } + public void setVendorsCode(String vendorsCode) + { + this.vendorsCode = vendorsCode; + } + + public String getVendorsCode() + { + return vendorsCode; + } + public void setWorkerId(String workerId) + { + this.workerId = workerId; + } + + public String getWorkerId() + { + return workerId; + } + public void setLaborWorkerId(Long laborWorkerId) + { + this.laborWorkerId = laborWorkerId; + } + + public Long getLaborWorkerId() + { + return laborWorkerId; + } + public void setWorkerCategory(Long workerCategory) + { + this.workerCategory = workerCategory; + } + + public Long getWorkerCategory() + { + return workerCategory; + } + public void setQrCode(Long qrCode) + { + this.qrCode = qrCode; + } + + public Long getQrCode() + { + return qrCode; + } + public void setName(String name) + { + this.name = name; + } + + public String getName() + { + return name; + } + public void setEthnic(String ethnic) + { + this.ethnic = ethnic; + } + + public String getEthnic() + { + return ethnic; + } + public void setNativePlace(String nativePlace) + { + this.nativePlace = nativePlace; + } + + public String getNativePlace() + { + return nativePlace; + } + public void setGender(Long gender) + { + this.gender = gender; + } + + public Long getGender() + { + return gender; + } + public void setBirthDate(Long birthDate) + { + this.birthDate = birthDate; + } + + public Long getBirthDate() + { + return birthDate; + } + public void setPhone(String phone) + { + this.phone = phone; + } + + public String getPhone() + { + return phone; + } + public void setDegreeName(String degreeName) + { + this.degreeName = degreeName; + } + + public String getDegreeName() + { + return degreeName; + } + public void setPhoto(String photo) + { + this.photo = photo; + } + + public String getPhoto() + { + return photo; + } + public void setRecentPhoto(String recentPhoto) + { + this.recentPhoto = recentPhoto; + } + + public String getRecentPhoto() + { + return recentPhoto; + } + public void setGroupId(String groupId) + { + this.groupId = groupId; + } + + public String getGroupId() + { + return groupId; + } + public void setGroupName(String groupName) + { + this.groupName = groupName; + } + + public String getGroupName() + { + return groupName; + } + public void setLeader(Integer leader) + { + this.leader = leader; + } + + public Integer getLeader() + { + return leader; + } + public void setWorkTypeCode(String workTypeCode) + { + this.workTypeCode = workTypeCode; + } + + public String getWorkTypeCode() + { + return workTypeCode; + } + public void setWorkTypeName(String workTypeName) + { + this.workTypeName = workTypeName; + } + + public String getWorkTypeName() + { + return workTypeName; + } + public void setSpecWorkType(Integer specWorkType) + { + this.specWorkType = specWorkType; + } + + public Integer getSpecWorkType() + { + return specWorkType; + } + public void setHatCode(String hatCode) + { + this.hatCode = hatCode; + } + + public String getHatCode() + { + return hatCode; + } + public void setState(Long state) + { + this.state = state; + } + + public Long getState() + { + return state; + } + public void setEnterDate(String enterDate) + { + this.enterDate = enterDate; + } + + public String getEnterDate() + { + return enterDate; + } + public void setExitDate(String exitDate) + { + this.exitDate = exitDate; + } + + public String getExitDate() + { + return exitDate; + } + public void setCompanyId(String companyId) + { + this.companyId = companyId; + } + + public String getCompanyId() + { + return companyId; + } + public void setCompanyName(String companyName) + { + this.companyName = companyName; + } + + public String getCompanyName() + { + return companyName; + } + public void setVendorId(Long vendorId) + { + this.vendorId = vendorId; + } + + public Long getVendorId() + { + return vendorId; + } + public void setTeamId(Integer teamId) + { + this.teamId = teamId; + } + + public Integer getTeamId() + { + return teamId; + } + public void setTeamName(String teamName) + { + this.teamName = teamName; + } + + public String getTeamName() + { + return teamName; + } + public void setEnterType(String enterType) + { + this.enterType = enterType; + } + + public String getEnterType() + { + return enterType; + } + public void setOther(String other) + { + this.other = other; + } + + public String getOther() + { + return other; + } + public void setIsDel(Long isDel) + { + this.isDel = isDel; + } + + public Long getIsDel() + { + return isDel; + } + + public String getAppId() { + return appId; + } + + public void setAppId(String appId) { + this.appId = appId; + } + + public String getCompanyTypeId() { + return companyTypeId; + } + + public void setCompanyTypeId(String companyTypeId) { + this.companyTypeId = companyTypeId; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("cfgid", getCfgid()) + .append("vendorsCode", getVendorsCode()) + .append("workerId", getWorkerId()) + .append("laborWorkerId", getLaborWorkerId()) + .append("workerCategory", getWorkerCategory()) + .append("qrCode", getQrCode()) + .append("name", getName()) + .append("ethnic", getEthnic()) + .append("nativePlace", getNativePlace()) + .append("gender", getGender()) + .append("birthDate", getBirthDate()) + .append("phone", getPhone()) + .append("degreeName", getDegreeName()) + .append("photo", getPhoto()) + .append("recentPhoto", getRecentPhoto()) + .append("groupId", getGroupId()) + .append("groupName", getGroupName()) + .append("leader", getLeader()) + .append("workTypeCode", getWorkTypeCode()) + .append("workTypeName", getWorkTypeName()) + .append("specWorkType", getSpecWorkType()) + .append("hatCode", getHatCode()) + .append("state", getState()) + .append("enterDate", getEnterDate()) + .append("exitDate", getExitDate()) + .append("companyId", getCompanyId()) + .append("companyName", getCompanyName()) + .append("vendorId", getVendorId()) + .append("teamId", getTeamId()) + .append("teamName", getTeamName()) + .append("enterType", getEnterType()) + .append("other", getOther()) + .append("remark", getRemark()) + .append("isDel", getIsDel()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .toString(); + } +} diff --git a/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/domain/SysApplyConfig.java b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/domain/SysApplyConfig.java new file mode 100644 index 00000000..813a99e5 --- /dev/null +++ b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/domain/SysApplyConfig.java @@ -0,0 +1,173 @@ +package com.yanzhu.job.domain; + +import com.yanzhu.common.core.annotation.Excel; +import com.yanzhu.common.core.web.domain.BaseEntity; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; + +/** + * 系统应用注册对象 sys_apply_config + * + * @author JiangYuQi + * @date 2024-01-13 + */ +public class SysApplyConfig extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 主键 */ + private Long id; + + /** 服务配置主键 */ + private Long cfgId; + + /** 服务配置类型 */ + private String cfgType; + + /** 应用主键 */ + @Excel(name = "应用主键") + private String appId; + + /** 公钥 */ + private String publicKey; + + /** 私钥 */ + private String privateKey; + + /** 项目主键 */ + @Excel(name = "项目主键") + private Long projectId; + + /** 项目名称 */ + @Excel(name = "项目名称") + private String projectName; + + /** 部门主键 */ + @Excel(name = "部门主键") + private Long deptId; + + /** 部门名称 */ + @Excel(name = "部门名称") + private String deptName; + + /** 是否删除 */ + @Excel(name = "是否删除") + private String isDel; + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + public void setAppId(String appId) + { + this.appId = appId; + } + + public String getAppId() + { + return appId; + } + + public void setPublicKey(String publicKey) + { + this.publicKey = publicKey; + } + + public String getPublicKey() + { + return publicKey; + } + public void setPrivateKey(String privateKey) + { + this.privateKey = privateKey; + } + + public String getPrivateKey() + { + return privateKey; + } + public void setProjectId(Long projectId) + { + this.projectId = projectId; + } + + public Long getProjectId() + { + return projectId; + } + public void setDeptId(Long deptId) + { + this.deptId = deptId; + } + + public Long getDeptId() + { + return deptId; + } + public void setIsDel(String isDel) + { + this.isDel = isDel; + } + + public String getIsDel() + { + return isDel; + } + + public String getProjectName() { + return projectName; + } + + public void setProjectName(String projectName) { + this.projectName = projectName; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public Long getCfgId() { + return cfgId; + } + + public void setCfgId(Long cfgId) { + this.cfgId = cfgId; + } + + public String getCfgType() { + return cfgType; + } + + public void setCfgType(String cfgType) { + this.cfgType = cfgType; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE) + .append("id", getId()) + .append("cfgId", getCfgId()) + .append("cfgType", getCfgType()) + .append("appId", getAppId()) + .append("publicKey", getPublicKey()) + .append("privateKey", getPrivateKey()) + .append("projectId", getProjectId()) + .append("deptId", getDeptId()) + .append("isDel", getIsDel()) + .append("createBy", getCreateBy()) + .append("createTime", getCreateTime()) + .append("updateBy", getUpdateBy()) + .append("updateTime", getUpdateTime()) + .append("remark", getRemark()) + .toString(); + } +} diff --git a/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/domain/SysNative.java b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/domain/SysNative.java new file mode 100644 index 00000000..d91a418e --- /dev/null +++ b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/domain/SysNative.java @@ -0,0 +1,55 @@ +package com.yanzhu.job.domain; + +import com.yanzhu.common.core.annotation.Excel; +import com.yanzhu.common.core.web.domain.BaseEntity; + +public class SysNative extends BaseEntity { + + private Long id; + private String address; + private String provinces; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getAddress() { + return address; + } + + public void setAddress(String address) { + this.address = address; + } + + public String getProvinces() { + return provinces; + } + + public void setProvinces(String provinces) { + this.provinces = provinces; + } + + public String getCitiy() { + return citiy; + } + + public void setCitiy(String citiy) { + this.citiy = citiy; + } + + public String getAreas() { + return areas; + } + + public void setAreas(String areas) { + this.areas = areas; + } + + private String citiy; + private String areas; + +} diff --git a/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/mapper/QuartzProjectAttendanceCfgMapper.java b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/mapper/QuartzProjectAttendanceCfgMapper.java new file mode 100644 index 00000000..2cd1c037 --- /dev/null +++ b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/mapper/QuartzProjectAttendanceCfgMapper.java @@ -0,0 +1,25 @@ +package com.yanzhu.job.mapper; + + +import com.yanzhu.job.domain.QuartzProjectAttendanceCfg; + +import java.util.List; + +/** + * 项目考勤配置Mapper接口 + * + * @author ruoyi + * @date 2023-09-24 + */ +public interface QuartzProjectAttendanceCfgMapper +{ + /** + * 查询项目考勤配置列表 + * + * @param quartzProjectAttendanceCfg 项目考勤配置 + * @return 项目考勤配置集合 + */ + public List selectSurProjectAttendanceCfgList(QuartzProjectAttendanceCfg quartzProjectAttendanceCfg); + + public List selectSurProjectAttendanceCfgListForAllInfo(QuartzProjectAttendanceCfg where); +} diff --git a/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/mapper/QuartzProjectAttendanceDataMapper.java b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/mapper/QuartzProjectAttendanceDataMapper.java new file mode 100644 index 00000000..13689133 --- /dev/null +++ b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/mapper/QuartzProjectAttendanceDataMapper.java @@ -0,0 +1,135 @@ +package com.yanzhu.job.mapper; + +import com.yanzhu.job.domain.QuartzProjectAttendanceData; +import org.apache.ibatis.annotations.Param; + +import java.util.List; +import java.util.Map; + +/** + * 劳务实名制管理Mapper接口 + * + * @author ruoyi + * @date 2023-09-24 + */ +public interface QuartzProjectAttendanceDataMapper +{ + /** + * 查询劳务实名制管理 + * + * @param id 劳务实名制管理主键 + * @return 劳务实名制管理 + */ + public QuartzProjectAttendanceData selectSurProjectAttendanceDataById(Long id); + + /** + * 查询劳务实名制管理列表 + * + * @param quartzProjectAttendanceData 劳务实名制管理 + * @return 劳务实名制管理集合 + */ + public List selectSurProjectAttendanceDataList(QuartzProjectAttendanceData quartzProjectAttendanceData); + + /** + * 查询考勤信息 + * + * @param quartzProjectAttendanceData 劳务实名制管理 + * @return 劳务实名制管理集合 + */ + public QuartzProjectAttendanceData findCurrentAttendanceData(QuartzProjectAttendanceData quartzProjectAttendanceData); + + public List selectSurProjectAttendanceDataListEx(QuartzProjectAttendanceData quartzProjectAttendanceData); + /** + * 新增劳务实名制管理 + * + * @param quartzProjectAttendanceData 劳务实名制管理 + * @return 结果 + */ + public int insertSurProjectAttendanceData(QuartzProjectAttendanceData quartzProjectAttendanceData); + + /** + * 修改劳务实名制管理 + * + * @param quartzProjectAttendanceData 劳务实名制管理 + * @return 结果 + */ + public int updateSurProjectAttendanceData(QuartzProjectAttendanceData quartzProjectAttendanceData); + + /** + * 删除劳务实名制管理 + * + * @param id 劳务实名制管理主键 + * @return 结果 + */ + public int deleteSurProjectAttendanceDataById(Long id); + + /** + * 批量删除劳务实名制管理 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteSurProjectAttendanceDataByIds(Long[] ids); + + /** + * 批量删除劳务实名制管理 + * + * @param list 需要删除的数据参数集合 + * @return 结果 + */ + public int deleteSurProjectAttendanceDataByParams(List list); + + /** + * 批量新增劳务实名制考勤管理 + * + * @param quartzProjectAttendanceDataList 劳务实名制考勤管理列表 + * @return 结果 + */ + public int batchSurProjectAttendanceData(@Param("list") List quartzProjectAttendanceDataList, @Param("year") String year); + + public Long getLastServerId(QuartzProjectAttendanceData where); + + List groupAllByComany(QuartzProjectAttendanceData where); + List groupByComany(QuartzProjectAttendanceData where); + + public Long getHuazhuPage(QuartzProjectAttendanceData where); + + + public List> initOtherData(Map data); + + public List> initHuaZhuData(Map data); + + public String findHuaZhuCompanyType(String deptName); + + public List todayAttendance(QuartzProjectAttendanceData where); + + /** + * 统计人员数据 + * @param where + * @return + */ + public List> findGroupAllByDays(QuartzProjectAttendanceData where); + + /** + * 统计所有数据 + * @param where + * @return + */ + public List> findGroupAllByParams(QuartzProjectAttendanceData where); + + /** + * 统计考勤数据 + * @param where + * @return + */ + public List> groupDataByParams(QuartzProjectAttendanceData where); + + /** + * 考勤数据列表 + * @param where + * @return + */ + public List attendanceDataList(QuartzProjectAttendanceData where); + + public List groupTodayCompanyTypeId(QuartzProjectAttendanceData where); +} diff --git a/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/mapper/QuartzProjectAttendanceGroupMapper.java b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/mapper/QuartzProjectAttendanceGroupMapper.java new file mode 100644 index 00000000..00c5cf2b --- /dev/null +++ b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/mapper/QuartzProjectAttendanceGroupMapper.java @@ -0,0 +1,87 @@ +package com.yanzhu.job.mapper; + + +import com.yanzhu.job.domain.QuartzProjectAttendanceGroup; + +import java.util.List; + +/** + * 广联达班组信息Mapper接口 + * + * @author ruoyi + * @date 2023-09-26 + */ +public interface QuartzProjectAttendanceGroupMapper +{ + /** + * 查询广联达班组信息 + * + * @param id 广联达班组信息主键 + * @return 广联达班组信息 + */ + public QuartzProjectAttendanceGroup selectSurProjectAttendanceGroupById(Long id); + + /** + * 查询广联达班组信息列表 + * + * @param quartzProjectAttendanceGroup 广联达班组信息 + * @return 广联达班组信息集合 + */ + public List selectSurProjectAttendanceGroupViewList(QuartzProjectAttendanceGroup quartzProjectAttendanceGroup); + + /** + * 查询广联达班组信息列表 + * + * @param quartzProjectAttendanceGroup 广联达班组信息 + * @return 广联达班组信息集合 + */ + public List selectSurProjectAttendanceGroupList(QuartzProjectAttendanceGroup quartzProjectAttendanceGroup); + + /** + * 新增广联达班组信息 + * + * @param quartzProjectAttendanceGroup 广联达班组信息 + * @return 结果 + */ + public int insertSurProjectAttendanceGroup(QuartzProjectAttendanceGroup quartzProjectAttendanceGroup); + + /** + * 修改广联达班组信息 + * + * @param quartzProjectAttendanceGroup 广联达班组信息 + * @return 结果 + */ + public int updateSurProjectAttendanceGroup(QuartzProjectAttendanceGroup quartzProjectAttendanceGroup); + + /** + * 删除广联达班组信息 + * + * @param id 广联达班组信息主键 + * @return 结果 + */ + public int deleteSurProjectAttendanceGroupById(Long id); + + /** + * 批量删除广联达班组信息 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteSurProjectAttendanceGroupByIds(Long[] ids); + + /** + * 批量删除广联达班组信息 + * + * @param list 需要删除的数据参数集合 + * @return 结果 + */ + public int deleteSurProjectAttendanceGroupByParams(List list); + + /** + * 批量新增广联达班组信息 + * + * @param quartzProjectAttendanceGroupList 广联达班组信息列表 + * @return 结果 + */ + public int batchSurProjectAttendanceGroup(List quartzProjectAttendanceGroupList); +} diff --git a/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/mapper/QuartzProjectAttendanceUserMapper.java b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/mapper/QuartzProjectAttendanceUserMapper.java new file mode 100644 index 00000000..97f5cf53 --- /dev/null +++ b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/mapper/QuartzProjectAttendanceUserMapper.java @@ -0,0 +1,170 @@ +package com.yanzhu.job.mapper; + + +import com.yanzhu.job.domain.QuartzProjectAttendanceCfg; +import com.yanzhu.job.domain.QuartzProjectAttendanceData; +import com.yanzhu.job.domain.QuartzProjectAttendanceUser; + +import java.util.List; +import java.util.Map; + +/** + * 考勤人员基本属性Mapper接口 + * + * @author ruoyi + * @date 2023-09-24 + */ +public interface QuartzProjectAttendanceUserMapper +{ + /** + * 查询考勤人员基本属性 + * + * @param id 考勤人员基本属性主键 + * @return 考勤人员基本属性 + */ + public QuartzProjectAttendanceUser selectSurProjectAttendanceUserById(Long id); + + /** + * 查询考勤人员信息 + * + * @param quartzProjectAttendanceUser + * @return 考勤人员基本属性 + */ + public QuartzProjectAttendanceUser findCurrentAttendanceUser(QuartzProjectAttendanceUser quartzProjectAttendanceUser); + + /** + * 查询[研筑]考勤人员信息 + * + * @param quartzProjectAttendanceUser + * @return 考勤人员基本属性 + */ + public QuartzProjectAttendanceUser findYzCurrentAttendanceUser(QuartzProjectAttendanceUser quartzProjectAttendanceUser); + + /** + * 查询考勤人员基本属性列表 + * + * @param quartzProjectAttendanceUser 考勤人员基本属性 + * @return 考勤人员基本属性集合 + */ + public List selectSurProjectAttendanceUserList(QuartzProjectAttendanceUser quartzProjectAttendanceUser); + + + public List querySurProjectAttendanceUserList(QuartzProjectAttendanceUser quartzProjectAttendanceUser); + + public List selectSurProjectAttendanceUserListJgw(QuartzProjectAttendanceUser quartzProjectAttendanceUser); + /** + * 新增考勤人员基本属性 + * + * @param quartzProjectAttendanceUser 考勤人员基本属性 + * @return 结果 + */ + public int insertSurProjectAttendanceUser(QuartzProjectAttendanceUser quartzProjectAttendanceUser); + + /** + * 修改考勤人员基本属性 + * + * @param quartzProjectAttendanceUser 考勤人员基本属性 + * @return 结果 + */ + public int updateSurProjectAttendanceUser(QuartzProjectAttendanceUser quartzProjectAttendanceUser); + + /** + * 删除考勤人员基本属性 + * + * @param id 考勤人员基本属性主键 + * @return 结果 + */ + public int deleteSurProjectAttendanceUserById(Long id); + + /** + * 批量删除考勤人员基本属性 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteSurProjectAttendanceUserByIds(Long[] ids); + + /** + * 批量删除考勤人员基本属性 + * + * @param list 需要删除的数据参数集合 + * @return 结果 + */ + public int deleteSurProjectAttendanceUserByParams(List list); + + /** + * 批量新增考勤人员基本属性 + * + * @param quartzProjectAttendanceUserList 考勤人员基本属性列表 + * @return 结果 + */ + public int batchSurProjectAttendanceUser(List quartzProjectAttendanceUserList); + + /** + * 下面三个方法完成考勤记录分页查询 + * countAttendance 获取总记录条数 + * queryAttendanceUsers 获取当前页workerIds + * queryAttendanceByUserIds 根据workerIds查询一页数据然后组装 + * @param where + * @return + */ + public List queryAttendanceByUserIds(QuartzProjectAttendanceUser where); + public long countAttendance(QuartzProjectAttendanceCfg where); + public List queryAttendanceUsers(QuartzProjectAttendanceUser where); + + public long countTodayAttendance(QuartzProjectAttendanceUser where); + + + public List todayAttendance(QuartzProjectAttendanceUser where); + public List todayAttendanceData(List list); + + public List todayAttendanceOtherData(Map data); + + /** + * 在岗工人查询 + * @param where + * @return + */ + List queryWorkerOnDuty(QuartzProjectAttendanceUser where); + + /** + * 统计人员数据 + * @param where + * @return + */ + public List> groupUserByParams(QuartzProjectAttendanceUser where); + + /** + * 在岗工人查询 + * @param where + * @return + */ + public List attendanceUserList(QuartzProjectAttendanceUser where); + + /** + * 统计人员数据 + * @param projectId + * @return + */ + public List> findUserAllByDays(Long projectId); + + /** + * 按部门汇总在岗人数 + * @param where + * @return + */ + List groupByWorkerOnDutyByDept(QuartzProjectAttendanceUser where); + /** + * 按部门汇总在岗|离岗人数 + * @param where + * @return + */ + List groupByWorkerByDept(QuartzProjectAttendanceUser where); + /** + * 在岗|离岗工人查询 + * @param where + * @return + */ + List queryWorkerByState(QuartzProjectAttendanceUser where); + +} diff --git a/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/mapper/SysApplyConfigMapper.java b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/mapper/SysApplyConfigMapper.java new file mode 100644 index 00000000..bcc02a24 --- /dev/null +++ b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/mapper/SysApplyConfigMapper.java @@ -0,0 +1,62 @@ +package com.yanzhu.job.mapper; + +import com.yanzhu.job.domain.SysApplyConfig; + +import java.util.List; + +/** + * 系统应用注册Mapper接口 + * + * @author JiangYuQi + * @date 2024-01-13 + */ +public interface SysApplyConfigMapper +{ + /** + * 查询系统应用注册 + * + * @param id 系统应用注册主键 + * @return 系统应用注册 + */ + public SysApplyConfig selectSysApplyConfigById(Long id); + + /** + * 查询系统应用注册列表 + * + * @param sysApplyConfig 系统应用注册 + * @return 系统应用注册集合 + */ + public List selectSysApplyConfigList(SysApplyConfig sysApplyConfig); + + /** + * 新增系统应用注册 + * + * @param sysApplyConfig 系统应用注册 + * @return 结果 + */ + public int insertSysApplyConfig(SysApplyConfig sysApplyConfig); + + /** + * 修改系统应用注册 + * + * @param sysApplyConfig 系统应用注册 + * @return 结果 + */ + public int updateSysApplyConfig(SysApplyConfig sysApplyConfig); + + /** + * 删除系统应用注册 + * + * @param id 系统应用注册主键 + * @return 结果 + */ + public int deleteSysApplyConfigById(Long id); + + /** + * 批量删除系统应用注册 + * + * @param ids 需要删除的数据主键集合 + * @return 结果 + */ + public int deleteSysApplyConfigByIds(Long[] ids); +} diff --git a/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/mapper/SysNativeMapper.java b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/mapper/SysNativeMapper.java new file mode 100644 index 00000000..e71a7ec9 --- /dev/null +++ b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/mapper/SysNativeMapper.java @@ -0,0 +1,10 @@ +package com.yanzhu.job.mapper; + +import com.yanzhu.job.domain.SysNative; + +import java.util.List; + +public interface SysNativeMapper { + + public List selectSysNativeListById(Long id); +} diff --git a/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/service/IQuartzProjectAttendanceCfgService.java b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/service/IQuartzProjectAttendanceCfgService.java new file mode 100644 index 00000000..bd98b00e --- /dev/null +++ b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/service/IQuartzProjectAttendanceCfgService.java @@ -0,0 +1,25 @@ +package com.yanzhu.job.service; + +import com.yanzhu.job.domain.QuartzProjectAttendanceCfg; + +import java.util.List; + +/** + * 项目考勤配置Service接口 + * + * @author ruoyi + * @date 2023-09-24 + */ +public interface IQuartzProjectAttendanceCfgService +{ + + /** + * 查询项目考勤配置列表 + * + * @param quartzProjectAttendanceCfg 项目考勤配置 + * @return 项目考勤配置集合 + */ + public List selectSurProjectAttendanceCfgList(QuartzProjectAttendanceCfg quartzProjectAttendanceCfg); + + +} diff --git a/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/service/IQuartzProjectAttendanceDataService.java b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/service/IQuartzProjectAttendanceDataService.java new file mode 100644 index 00000000..b9973c80 --- /dev/null +++ b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/service/IQuartzProjectAttendanceDataService.java @@ -0,0 +1,142 @@ +package com.yanzhu.job.service; + + +import com.yanzhu.job.domain.QuartzProjectAttendanceData; + +import java.util.List; +import java.util.Map; + +/** + * 劳务实名制管理Service接口 + * + * @author ruoyi + * @date 2023-09-24 + */ +public interface IQuartzProjectAttendanceDataService +{ + /** + * 查询劳务实名制管理 + * + * @param id 劳务实名制管理主键 + * @return 劳务实名制管理 + */ + public QuartzProjectAttendanceData selectSurProjectAttendanceDataById(Long id); + + /** + * 查询劳务实名制管理列表 + * + * @param quartzProjectAttendanceData 劳务实名制管理 + * @return 劳务实名制管理集合 + */ + public List selectSurProjectAttendanceDataList(QuartzProjectAttendanceData quartzProjectAttendanceData); + + /** + * 查询考勤信息 + * + * @param quartzProjectAttendanceData 劳务实名制管理 + * @return 劳务实名制管理集合 + */ + public QuartzProjectAttendanceData findCurrentAttendanceData(QuartzProjectAttendanceData quartzProjectAttendanceData); + + public List selectSurProjectAttendanceDataListEx(QuartzProjectAttendanceData quartzProjectAttendanceData); + + /** + * 新增劳务实名制管理 + * + * @param quartzProjectAttendanceData 劳务实名制管理 + * @return 结果 + */ + public int insertSurProjectAttendanceData(QuartzProjectAttendanceData quartzProjectAttendanceData); + + /** + * 修改劳务实名制管理 + * + * @param quartzProjectAttendanceData 劳务实名制管理 + * @return 结果 + */ + public int updateSurProjectAttendanceData(QuartzProjectAttendanceData quartzProjectAttendanceData); + + /** + * 批量删除劳务实名制管理 + * + * @param ids 需要删除的劳务实名制管理主键集合 + * @return 结果 + */ + public int deleteSurProjectAttendanceDataByIds(Long[] ids); + + /** + * 删除劳务实名制管理信息 + * + * @param id 劳务实名制管理主键 + * @return 结果 + */ + public int deleteSurProjectAttendanceDataById(Long id); + + /** + * 批量删除劳务实名制管理 + * + * @param list 需要删除的数据参数集合 + * @return 结果 + */ + public int deleteSurProjectAttendanceDataByParams(List list); + + /** + * 批量新增劳务实名制考勤管理 + * + * @param quartzProjectAttendanceDataList 劳务实名制管理考勤列表 + * @return 结果 + */ + public int batchSurProjectAttendanceData(List quartzProjectAttendanceDataList); + + public void add(QuartzProjectAttendanceData sdata); + + public String getLastServerId(QuartzProjectAttendanceData where); + + public List groupByComany(QuartzProjectAttendanceData where); + + public Long getHuazhuPage( QuartzProjectAttendanceData where); + + public List groupAllByComany(QuartzProjectAttendanceData where); + + public List> initOtherData(Map data); + + public List> initHuaZhuData(Map data); + + List todayAttendance(QuartzProjectAttendanceData where); + + /** + * 统计所有数据 + * @param where + * @return + */ + public List> groupAllByParams(QuartzProjectAttendanceData where); + + /** + * 统计人员数据 + * @param where + * @return + */ + public List> findGroupAllByDays(QuartzProjectAttendanceData where); + + /** + * 考勤数据列表 + * @param where + * @return + */ + public List attendanceDataList(QuartzProjectAttendanceData where); + + /** + * 统计考勤数据 + * @param where + * @return + */ + public List> groupDataByParams(QuartzProjectAttendanceData where); + + List groupTodayCompanyTypeId(QuartzProjectAttendanceData where); + + /** + * 指增加 + * @param addList + */ + void addList(List addList); +} diff --git a/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/service/IQuartzProjectAttendanceGroupService.java b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/service/IQuartzProjectAttendanceGroupService.java new file mode 100644 index 00000000..2c811190 --- /dev/null +++ b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/service/IQuartzProjectAttendanceGroupService.java @@ -0,0 +1,95 @@ +package com.yanzhu.job.service; + + +import com.yanzhu.job.domain.QuartzProjectAttendanceGroup; + +import java.util.List; + +/** + * 广联达班组信息Service接口 + * + * @author ruoyi + * @date 2023-09-26 + */ +public interface IQuartzProjectAttendanceGroupService +{ + /** + * 查询广联达班组信息 + * + * @param id 广联达班组信息主键 + * @return 广联达班组信息 + */ + public QuartzProjectAttendanceGroup selectSurProjectAttendanceGroupById(Long id); + + /** + * 查询广联达班组信息列表 + * + * @param quartzProjectAttendanceGroup 广联达班组信息 + * @return 广联达班组信息集合 + */ + public List selectSurProjectAttendanceGroupViewList(QuartzProjectAttendanceGroup quartzProjectAttendanceGroup); + + /** + * 查询广联达班组信息列表 + * + * @param quartzProjectAttendanceGroup 广联达班组信息 + * @return 广联达班组信息集合 + */ + public List selectSurProjectAttendanceGroupList(QuartzProjectAttendanceGroup quartzProjectAttendanceGroup); + + /** + * 新增广联达班组信息 + * + * @param quartzProjectAttendanceGroup 广联达班组信息 + * @return 结果 + */ + public int insertSurProjectAttendanceGroup(QuartzProjectAttendanceGroup quartzProjectAttendanceGroup); + + /** + * 修改广联达班组信息 + * + * @param quartzProjectAttendanceGroup 广联达班组信息 + * @return 结果 + */ + public int updateSurProjectAttendanceGroup(QuartzProjectAttendanceGroup quartzProjectAttendanceGroup); + + /** + * 批量删除广联达班组信息 + * + * @param ids 需要删除的广联达班组信息主键集合 + * @return 结果 + */ + public int deleteSurProjectAttendanceGroupByIds(Long[] ids); + + /** + * 删除广联达班组信息信息 + * + * @param id 广联达班组信息主键 + * @return 结果 + */ + public int deleteSurProjectAttendanceGroupById(Long id); + + /** + * 批量删除广联达班组信息 + * + * @param list 需要删除的数据参数集合 + * @return 结果 + */ + public int deleteSurProjectAttendanceGroupByParams(List list); + + /** + * 批量新增广联达班组信息 + * + * @param quartzProjectAttendanceGroupList 广联达班组信息列表 + * @return 结果 + */ + public int batchSurProjectAttendanceGroup(List quartzProjectAttendanceGroupList); + + public void add(QuartzProjectAttendanceGroup group); + + /** + * 更新济工网的分组类型 + * @param group + */ + public void updateJgw(QuartzProjectAttendanceGroup group); +} diff --git a/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/service/IQuartzProjectAttendanceUserService.java b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/service/IQuartzProjectAttendanceUserService.java new file mode 100644 index 00000000..4a2265a0 --- /dev/null +++ b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/service/IQuartzProjectAttendanceUserService.java @@ -0,0 +1,163 @@ +package com.yanzhu.job.service; + + +import com.yanzhu.job.domain.QuartzProjectAttendanceData; +import com.yanzhu.job.domain.QuartzProjectAttendanceUser; + +import java.util.List; +import java.util.Map; + +/** + * 考勤人员基本属性Service接口 + * + * @author ruoyi + * @date 2023-09-24 + */ +public interface IQuartzProjectAttendanceUserService +{ + /** + * 查询考勤人员基本属性 + * + * @param id 考勤人员基本属性主键 + * @return 考勤人员基本属性 + */ + public QuartzProjectAttendanceUser selectSurProjectAttendanceUserById(Long id); + + /** + * 查询考勤人员信息 + * + * @param quartzProjectAttendanceUser + * @return 考勤人员基本属性 + */ + public QuartzProjectAttendanceUser findCurrentAttendanceUser(QuartzProjectAttendanceUser quartzProjectAttendanceUser); + + /** + * 查询[研筑]考勤人员信息 + * + * @param quartzProjectAttendanceUser + * @return 考勤人员基本属性 + */ + public QuartzProjectAttendanceUser findYzCurrentAttendanceUser(QuartzProjectAttendanceUser quartzProjectAttendanceUser); + + /** + * 查询考勤人员基本属性列表 + * + * @param quartzProjectAttendanceUser 考勤人员基本属性 + * @return 考勤人员基本属性集合 + */ + public List selectSurProjectAttendanceUserList(QuartzProjectAttendanceUser quartzProjectAttendanceUser); + + /** + * 新增考勤人员基本属性 + * + * @param quartzProjectAttendanceUser 考勤人员基本属性 + * @return 结果 + */ + public int insertSurProjectAttendanceUser(QuartzProjectAttendanceUser quartzProjectAttendanceUser); + + /** + * 修改考勤人员基本属性 + * + * @param quartzProjectAttendanceUser 考勤人员基本属性 + * @return 结果 + */ + public int updateSurProjectAttendanceUser(QuartzProjectAttendanceUser quartzProjectAttendanceUser); + + /** + * 批量删除考勤人员基本属性 + * + * @param ids 需要删除的考勤人员基本属性主键集合 + * @return 结果 + */ + public int deleteSurProjectAttendanceUserByIds(Long[] ids); + + /** + * 删除考勤人员基本属性信息 + * + * @param id 考勤人员基本属性主键 + * @return 结果 + */ + public int deleteSurProjectAttendanceUserById(Long id); + + /** + * 批量删除考勤人员基本属性 + * + * @param list 需要删除的数据参数集合 + * @return 结果 + */ + public int deleteSurProjectAttendanceUserByParams(List list); + + /** + * 批量新增考勤人员基本属性 + * + * @param quartzProjectAttendanceUserList 考勤人员基本属性列表 + * @return 结果 + */ + public int batchSurProjectAttendanceUser(List quartzProjectAttendanceUserList); + + public void add(QuartzProjectAttendanceUser user); + + public List queryAttendanceData(QuartzProjectAttendanceUser where); + + public long countTodayAttendance(QuartzProjectAttendanceUser where); + + public List todayAttendance(QuartzProjectAttendanceUser where); + + public long countAttendance(QuartzProjectAttendanceUser where); + + /** + * 济工网人员查询 + * @param quartzProjectAttendanceUser + * @return + */ + public List selectSurProjectAttendanceUserListJgw(QuartzProjectAttendanceUser quartzProjectAttendanceUser); + + /** + * 在岗工人查询 + * @param where + * @return + */ + public List queryWorkerOnDuty(QuartzProjectAttendanceUser where); + + /** + * 统计人员数据 + * @param where + * @return + */ + public List> groupUserByParams(QuartzProjectAttendanceUser where); + + /** + * 在岗工人查询 + * @param where + * @return + */ + public List attendanceUserList(QuartzProjectAttendanceUser where); + + /** + * 统计人员数据 + * @param projectId + * @return + */ + public List> findUserAllByDays(Long projectId); + + /** + * 按部门汇总在岗人数 + * @param where + * @return + */ + List groupByWorkerOnDutyByDept(QuartzProjectAttendanceUser where); + + List querySurProjectAttendanceUserList(QuartzProjectAttendanceUser quartzProjectAttendanceUser); + /** + * 按部门汇总在岗|离岗人数 + * @param where + * @return + */ + List groupByWorkerByDept(QuartzProjectAttendanceUser where); + /** + * 在岗|离岗工人查询 + * @param where + * @return + */ + List queryWorkerByState(QuartzProjectAttendanceUser where); +} diff --git a/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/service/ISysApplyConfigService.java b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/service/ISysApplyConfigService.java new file mode 100644 index 00000000..76f67736 --- /dev/null +++ b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/service/ISysApplyConfigService.java @@ -0,0 +1,67 @@ +package com.yanzhu.job.service; + +import com.yanzhu.job.domain.SysApplyConfig; + +import java.util.List; + +/** + * 系统应用注册Service接口 + * + * @author JiangYuQi + * @date 2024-01-13 + */ +public interface ISysApplyConfigService +{ + /** + * 查询系统应用注册 + * + * @param id 系统应用注册主键 + * @return 系统应用注册 + */ + public SysApplyConfig selectSysApplyConfigById(Long id); + + /** + * 查询系统应用注册列表 + * + * @param sysApplyConfig 系统应用注册 + * @return 系统应用注册集合 + */ + public List selectSysApplyConfigList(SysApplyConfig sysApplyConfig); + + /** + * 新增系统应用注册 + * + * @param sysApplyConfig 系统应用注册 + * @return 结果 + */ + public int insertSysApplyConfig(SysApplyConfig sysApplyConfig); + + /** + * 修改系统应用注册 + * + * @param sysApplyConfig 系统应用注册 + * @return 结果 + */ + public int updateSysApplyConfig(SysApplyConfig sysApplyConfig); + + /** + * 批量删除系统应用注册 + * + * @param ids 需要删除的系统应用注册主键集合 + * @return 结果 + */ + public int deleteSysApplyConfigByIds(Long[] ids); + + /** + * 删除系统应用注册信息 + * + * @param id 系统应用注册主键 + * @return 结果 + */ + public int deleteSysApplyConfigById(Long id); + + /** + * 加载注册应用 + */ + public void loadingSysApplyConfigCache(); +} diff --git a/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/service/ISysNativeService.java b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/service/ISysNativeService.java new file mode 100644 index 00000000..31406458 --- /dev/null +++ b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/service/ISysNativeService.java @@ -0,0 +1,11 @@ +package com.yanzhu.job.service; + + + +import com.yanzhu.job.domain.SysNative; + +import java.util.List; + +public interface ISysNativeService { + public List selectSysNativeListById(Long id); +} diff --git a/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/service/impl/QuartzProjectAttendanceCfgServiceImpl.java b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/service/impl/QuartzProjectAttendanceCfgServiceImpl.java new file mode 100644 index 00000000..1639c86c --- /dev/null +++ b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/service/impl/QuartzProjectAttendanceCfgServiceImpl.java @@ -0,0 +1,49 @@ +package com.yanzhu.job.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.yanzhu.common.core.enums.ApplyCfgTypeEnum; +import com.yanzhu.common.core.enums.ShiFouEnum; +import com.yanzhu.common.core.enums.VendorsCodeEnum; +import com.yanzhu.common.core.utils.DateUtils; +import com.yanzhu.common.security.utils.SecurityUtils; +import com.yanzhu.job.domain.QuartzProjectAttendanceCfg; +import com.yanzhu.job.domain.SysApplyConfig; +import com.yanzhu.job.mapper.QuartzProjectAttendanceCfgMapper; +import com.yanzhu.job.service.IQuartzProjectAttendanceCfgService; +import com.yanzhu.job.service.ISysApplyConfigService; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +/** + * 项目考勤配置Service业务层处理 + * + * @author ruoyi + * @date 2023-09-24 + */ +@Service +public class QuartzProjectAttendanceCfgServiceImpl implements IQuartzProjectAttendanceCfgService +{ + + @Autowired + private ISysApplyConfigService sysApplyConfigService; + + @Autowired + private QuartzProjectAttendanceCfgMapper quartzProjectAttendanceCfgMapper; + + /** + * 查询项目考勤配置列表 + * + * @param quartzProjectAttendanceCfg 项目考勤配置 + * @return 项目考勤配置 + */ + @Override + public List selectSurProjectAttendanceCfgList(QuartzProjectAttendanceCfg quartzProjectAttendanceCfg) + { + return quartzProjectAttendanceCfgMapper.selectSurProjectAttendanceCfgList(quartzProjectAttendanceCfg); + } + +} diff --git a/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/service/impl/QuartzProjectAttendanceDataServiceImpl.java b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/service/impl/QuartzProjectAttendanceDataServiceImpl.java new file mode 100644 index 00000000..e5703e5e --- /dev/null +++ b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/service/impl/QuartzProjectAttendanceDataServiceImpl.java @@ -0,0 +1,521 @@ +package com.yanzhu.job.service.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.StrUtil; +import com.yanzhu.common.core.utils.DateUtils; +import com.yanzhu.common.core.utils.StringUtils; +import com.yanzhu.common.security.utils.SecurityUtils; +import com.yanzhu.job.domain.QuartzProjectAttendanceCfg; +import com.yanzhu.job.domain.QuartzProjectAttendanceData; +import com.yanzhu.job.domain.QuartzProjectAttendanceGroup; +import com.yanzhu.job.domain.QuartzProjectAttendanceUser; +import com.yanzhu.job.mapper.QuartzProjectAttendanceCfgMapper; +import com.yanzhu.job.mapper.QuartzProjectAttendanceDataMapper; +import com.yanzhu.job.mapper.QuartzProjectAttendanceGroupMapper; +import com.yanzhu.job.mapper.QuartzProjectAttendanceUserMapper; +import com.yanzhu.job.service.IQuartzProjectAttendanceDataService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Objects; +import java.util.stream.Collectors; + +/** + * 劳务实名制管理Service业务层处理 + * + * @author ruoyi + * @date 2023-09-24 + */ +@Service +public class QuartzProjectAttendanceDataServiceImpl implements IQuartzProjectAttendanceDataService +{ + @Autowired + private QuartzProjectAttendanceDataMapper quartzProjectAttendanceDataMapper; + + @Autowired + private QuartzProjectAttendanceUserMapper quartzProjectAttendanceUserMapper; + + @Autowired + private QuartzProjectAttendanceGroupMapper quartzProjectAttendanceGroupMapper; + + @Autowired + private QuartzProjectAttendanceCfgMapper quartzProjectAttendanceCfgMapper; + + + /** + * 查询劳务实名制管理 + * + * @param id 劳务实名制管理主键 + * @return 劳务实名制管理 + */ + @Override + public QuartzProjectAttendanceData selectSurProjectAttendanceDataById(Long id) + { + return quartzProjectAttendanceDataMapper.selectSurProjectAttendanceDataById(id); + } + + /** + * 查询劳务实名制管理列表 + * + * @param quartzProjectAttendanceData 劳务实名制管理 + * @return 劳务实名制管理 + */ + @Override + public List selectSurProjectAttendanceDataList(QuartzProjectAttendanceData quartzProjectAttendanceData) + { + return quartzProjectAttendanceDataMapper.selectSurProjectAttendanceDataList(quartzProjectAttendanceData); + } + + /** + * 查询考勤信息 + * + * @param quartzProjectAttendanceData 劳务实名制管理 + * @return 劳务实名制管理集合 + */ + @Override + public QuartzProjectAttendanceData findCurrentAttendanceData(QuartzProjectAttendanceData quartzProjectAttendanceData){ + return quartzProjectAttendanceDataMapper.findCurrentAttendanceData(quartzProjectAttendanceData); + } + + @Override + public List selectSurProjectAttendanceDataListEx(QuartzProjectAttendanceData quartzProjectAttendanceData) + { + return quartzProjectAttendanceDataMapper.selectSurProjectAttendanceDataListEx(quartzProjectAttendanceData); + } + + /** + * 新增劳务实名制管理 + * + * @param quartzProjectAttendanceData 劳务实名制管理 + * @return 结果 + */ + @Override + public int insertSurProjectAttendanceData(QuartzProjectAttendanceData quartzProjectAttendanceData) + { + String userName= SecurityUtils.getUsername(); + quartzProjectAttendanceData.setCreateBy(StrUtil.isEmpty(userName)?"task":userName); + quartzProjectAttendanceData.setCreateTime(DateUtils.getNowDate()); + + return quartzProjectAttendanceDataMapper.insertSurProjectAttendanceData(quartzProjectAttendanceData); + } + + /** + * 修改劳务实名制管理 + * + * @param quartzProjectAttendanceData 劳务实名制管理 + * @return 结果 + */ + @Override + public int updateSurProjectAttendanceData(QuartzProjectAttendanceData quartzProjectAttendanceData) + { + String userName=SecurityUtils.getUsername(); + quartzProjectAttendanceData.setUpdateBy(StrUtil.isEmpty(userName)?"task":userName); + + quartzProjectAttendanceData.setUpdateTime(DateUtils.getNowDate()); + return quartzProjectAttendanceDataMapper.updateSurProjectAttendanceData(quartzProjectAttendanceData); + } + + /** + * 批量删除劳务实名制管理 + * + * @param ids 需要删除的劳务实名制管理主键 + * @return 结果 + */ + @Override + public int deleteSurProjectAttendanceDataByIds(Long[] ids) + { + return quartzProjectAttendanceDataMapper.deleteSurProjectAttendanceDataByIds(ids); + } + + /** + * 删除劳务实名制管理信息 + * + * @param id 劳务实名制管理主键 + * @return 结果 + */ + @Override + public int deleteSurProjectAttendanceDataById(Long id) + { + return quartzProjectAttendanceDataMapper.deleteSurProjectAttendanceDataById(id); + } + + /** + * 批量删除劳务实名制管理 + * + * @param list 需要删除的数据参数集合 + * @return 结果 + */ + @Override + public int deleteSurProjectAttendanceDataByParams(List list) { + return quartzProjectAttendanceDataMapper.deleteSurProjectAttendanceDataByParams(list); + } + + /** + * 批量新增劳务实名制考勤管理 + * + * @param quartzProjectAttendanceDataList 劳务实名制考勤管理列表 + * @return 结果 + */ + @Override + public int batchSurProjectAttendanceData(List quartzProjectAttendanceDataList) { + return quartzProjectAttendanceDataMapper.batchSurProjectAttendanceData(quartzProjectAttendanceDataList,DateUtils.dateTimeNow(DateUtils.YYYY)); + } + + @Override + public void add(QuartzProjectAttendanceData sdata) { + if(StringUtils.isEmpty(sdata.getWorkerId()) || StringUtils.isEmpty(sdata.getAttendanceTime())){ + return; + } + QuartzProjectAttendanceData where=new QuartzProjectAttendanceData(); + where.setVendorsCode(sdata.getVendorsCode()); + where.setCfgid(sdata.getCfgid()); + where.setWorkerId(sdata.getWorkerId()); + where.setAttendanceTime(sdata.getAttendanceTime()); + List list=selectSurProjectAttendanceDataListEx(where); + if(list.size()==0){ + //设置考勤其它参数 + //查询人员信息 + QuartzProjectAttendanceUser userWhere=new QuartzProjectAttendanceUser(); + userWhere.setWorkerId(sdata.getWorkerId()); + List uList= quartzProjectAttendanceUserMapper.selectSurProjectAttendanceUserList(userWhere); + if(uList.size()==0){ + return; + } + QuartzProjectAttendanceUser user=uList.get(0); + sdata.setWorkerName(user.getName()); + String photo=user.getPhoto(); + if(StrUtil.isEmpty(photo)){ + photo=user.getRecentPhoto(); + } + + sdata.setWorkerPhoto(photo); + sdata.setWorkerGender(user.getGender());; + sdata.setGroupName(user.getGroupName()); + sdata.setWorkTypeName(user.getWorkTypeName()); + sdata.setEthnic(user.getEthnic()); + sdata.setNativePlace(user.getNativePlace()); + sdata.setPhone(user.getPhone()); + sdata.setSpecWorkType(user.getSpecWorkType()); + if("jgw".equals(sdata.getVendorsCode())) { + sdata.setCompanyId(user.getCompanyId()); + } + //查询分组信息 + QuartzProjectAttendanceGroup groupWhere=new QuartzProjectAttendanceGroup(); + groupWhere.setCfgid(sdata.getCfgid()); + groupWhere.setCompanyId(sdata.getCompanyId()); + List gList= quartzProjectAttendanceGroupMapper.selectSurProjectAttendanceGroupList(groupWhere); + if(gList.size()==0){ + return; + } + QuartzProjectAttendanceGroup group=gList.get(0); + sdata.setCompanyName(group.getCompanyName()); + sdata.setCompanyTypeId(group.getCompanyTypeId()); + //查询华筑的分组信息 + if("huazhu".equals(sdata.getVendorsCode())){ + sdata.setWorkerGender(sdata.getWorkerGender()); + sdata.setCompanyTypeId(getHuazhuCompanyTypeId(group.getCompanyName()));//获取华筑的分包商类型 + } + if("jgw".equals(sdata.getVendorsCode())){ + //sdata.setWorkTypeName(group.getCompanyCode()); + //sdata.setCompanyName(user.getCompanyName()); + sdata.setWorkTypeName(user.getWorkTypeName()); + sdata.setCompanyName(group.getCompanyName()); + sdata.setGroupName(group.getTeamName()); + } + //查询项目部门信息 + QuartzProjectAttendanceCfg cfgWhere=new QuartzProjectAttendanceCfg(); + cfgWhere.setId(sdata.getCfgid()); + List cfgList= quartzProjectAttendanceCfgMapper.selectSurProjectAttendanceCfgListForAllInfo(cfgWhere); + if(cfgList.size()==0){ + return; + } + QuartzProjectAttendanceCfg cfg=cfgList.get(0); + sdata.setProjectId(cfg.getProjectId()); + sdata.setDeptId(cfg.getDeptId()); + sdata.setProjectName(cfg.getProjectName()); + sdata.setDeptName(cfg.getDeptName()); + if(sdata.getCompanyTypeId()==null){ + sdata.setCompanyTypeId("0"); + } + insertSurProjectAttendanceData(sdata); + }else{ + sdata.setId(list.get(0).getId()); + QuartzProjectAttendanceData upData=list.get(0); + String dt1=upData.getAttendanceTime(); // + String dt2=upData.getAttendanceOutTime(); + String dt3=sdata.getAttendanceTime(); + if (StrUtil.isEmpty(dt3)) { + return; + } + long time3=DateUtil.parse(dt3).getTime(); + if(StrUtil.isEmpty(dt2)){ + upData.setAttendanceOutTime(dt3); + //比较 dt1,dt2 进行交换 + long time2=DateUtil.parse(dt3).getTime(); + long time1=DateUtil.parse(dt1).getTime(); + if(time1>time2){ + upData.setAttendanceTime(dt3); + upData.setAttendanceOutTime(dt1); + } + }else{ + long time2=DateUtil.parse(dt2).getTime(); + long time1=DateUtil.parse(dt1).getTime(); + //比较 dt3dt3 + if(time3dt2 out->dt3 + if(time3>time2){ + upData.setAttendanceOutTime(dt3); + } + } + //upData.setAttendanceOutTime(sdata.getAttendanceTime()); + if("jgw".equals(upData.getVendorsCode())){ + upData.setRemark(sdata.getRemark()); + } + updateSurProjectAttendanceData(upData); + } + } + + private String getHuazhuCompanyTypeId(String groupName) { + return quartzProjectAttendanceDataMapper.findHuaZhuCompanyType(groupName); + } + + @Override + public String getLastServerId(QuartzProjectAttendanceData where) { + return ""+ quartzProjectAttendanceDataMapper.getLastServerId(where); + } + + @Override + public List groupByComany(QuartzProjectAttendanceData where) { + return quartzProjectAttendanceDataMapper.groupByComany(where); + } + + @Override + public Long getHuazhuPage( QuartzProjectAttendanceData attWhere) { + return quartzProjectAttendanceDataMapper.getHuazhuPage(attWhere); + } + + @Override + public List groupAllByComany(QuartzProjectAttendanceData where) { + return quartzProjectAttendanceDataMapper.groupAllByComany(where); + } + + @Override + public List> initOtherData(Map data) { + List> dataList = new ArrayList<>(); + List> list = quartzProjectAttendanceDataMapper.initOtherData(data); + if(StringUtils.isNotEmpty(list)){ + List workerIds = list.stream().map(Map -> Map.get("workerId").toString()).collect(Collectors.toList()); + data.put("list",workerIds); + List datas= quartzProjectAttendanceUserMapper.todayAttendanceOtherData(data); + for (Map map:list) { + for(QuartzProjectAttendanceUser sau:datas){ + if(Objects.equals(map.get("workerId").toString(),sau.getWorkerId())){ + map.put("inTime",DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,sau.getInTime())); + map.put("outTime",DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,sau.getOutTime())); + dataList.add(map); + } + } + } + } + return dataList; + } + + @Override + public List> initHuaZhuData(Map data) { + List> dataList = new ArrayList<>(); + List> list = quartzProjectAttendanceDataMapper.initHuaZhuData(data); + if(StringUtils.isNotEmpty(list)){ + List workerIds = list.stream().map(Map -> Map.get("workerId").toString()).collect(Collectors.toList()); + data.put("list",workerIds); + List datas= quartzProjectAttendanceUserMapper.todayAttendanceOtherData(data); + for (Map map:list) { + for(QuartzProjectAttendanceUser sau:datas){ + if(Objects.equals(map.get("workerId").toString(),sau.getWorkerId())){ + map.put("inTime",DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,sau.getInTime())); + map.put("outTime",DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD_HH_MM_SS,sau.getOutTime())); + dataList.add(map); + } + } + } + } + return dataList; + } + + @Override + public List todayAttendance(QuartzProjectAttendanceData where) { + return quartzProjectAttendanceDataMapper.todayAttendance(where); + } + + /** + * 统计所有数据 + * @param where + * @return + */ + @Override + public List> groupAllByParams(QuartzProjectAttendanceData where) { + return quartzProjectAttendanceDataMapper.findGroupAllByParams(where); + } + + /** + * 统计人员数据 + * @param where + * @return + */ + @Override + public List> findGroupAllByDays(QuartzProjectAttendanceData where){ + return quartzProjectAttendanceDataMapper.findGroupAllByDays(where); + } + + /** + * 统计考勤数据 + * @param where + * @return + */ + @Override + public List> groupDataByParams(QuartzProjectAttendanceData where){ + return quartzProjectAttendanceDataMapper.groupDataByParams(where); + } + + /** + * 考勤数据列表 + * @param where + * @return + */ + @Override + public List attendanceDataList(QuartzProjectAttendanceData where) { + return quartzProjectAttendanceDataMapper.attendanceDataList(where); + } + + @Override + public List groupTodayCompanyTypeId(QuartzProjectAttendanceData where) { + return quartzProjectAttendanceDataMapper.groupTodayCompanyTypeId(where); + } + + /** + * 批量增加 + * @param addList + */ + @Override + public void addList(List addList) { + if(addList.size()==0){ + return; + } + QuartzProjectAttendanceData where=new QuartzProjectAttendanceData(); + where.setVendorsCode(addList.get(0).getVendorsCode()); + where.setCfgid(addList.get(0).getCfgid()); + where.setAttendanceTime(addList.get(0).getAttendanceTime()); + List oldList=selectSurProjectAttendanceDataListEx(where); + for(QuartzProjectAttendanceData sdata:addList){ + List list=oldList.stream().filter(d->d.getWorkerId().equals(sdata.getWorkerId())).collect(Collectors.toList()); + if(list.size()==0){ + //设置考勤其它参数 + //查询人员信息 + QuartzProjectAttendanceUser userWhere=new QuartzProjectAttendanceUser(); + userWhere.setWorkerId(sdata.getWorkerId()); + List uList= quartzProjectAttendanceUserMapper.selectSurProjectAttendanceUserList(userWhere); + if(uList.size()==0){ + return; + } + QuartzProjectAttendanceUser user=uList.get(0); + sdata.setWorkerName(user.getName()); + String photo=user.getPhoto(); + if(StrUtil.isEmpty(photo)){ + photo=user.getRecentPhoto(); + } + + sdata.setWorkerPhoto(photo); + sdata.setWorkerGender(user.getGender());; + sdata.setGroupName(user.getGroupName()); + sdata.setWorkTypeName(user.getWorkTypeName()); + sdata.setEthnic(user.getEthnic()); + sdata.setNativePlace(user.getNativePlace()); + sdata.setPhone(user.getPhone()); + sdata.setSpecWorkType(user.getSpecWorkType()); + if("jgw".equals(sdata.getVendorsCode())) { + sdata.setCompanyId(user.getCompanyId()); + } + //查询分组信息 + QuartzProjectAttendanceGroup groupWhere=new QuartzProjectAttendanceGroup(); + groupWhere.setCfgid(sdata.getCfgid()); + groupWhere.setCompanyId(sdata.getCompanyId()); + List gList= quartzProjectAttendanceGroupMapper.selectSurProjectAttendanceGroupList(groupWhere); + if(gList.size()==0){ + return; + } + QuartzProjectAttendanceGroup group=gList.get(0); + sdata.setCompanyName(group.getCompanyName()); + sdata.setCompanyTypeId(group.getCompanyTypeId()); + //查询华筑的分组信息 + if("huazhu".equals(sdata.getVendorsCode())){ + sdata.setWorkerGender(sdata.getWorkerGender()); + sdata.setCompanyTypeId(getHuazhuCompanyTypeId(group.getCompanyName()));//获取华筑的分包商类型 + } + if("jgw".equals(sdata.getVendorsCode())){ + //sdata.setWorkTypeName(group.getCompanyCode()); + //sdata.setCompanyName(user.getCompanyName()); + sdata.setWorkTypeName(user.getWorkTypeName()); + sdata.setCompanyName(group.getCompanyName()); + sdata.setGroupName(group.getTeamName()); + } + //查询项目部门信息 + QuartzProjectAttendanceCfg cfgWhere=new QuartzProjectAttendanceCfg(); + cfgWhere.setId(sdata.getCfgid()); + List cfgList= quartzProjectAttendanceCfgMapper.selectSurProjectAttendanceCfgListForAllInfo(cfgWhere); + if(cfgList.size()==0){ + return; + } + QuartzProjectAttendanceCfg cfg=cfgList.get(0); + sdata.setProjectId(cfg.getProjectId()); + sdata.setDeptId(cfg.getDeptId()); + sdata.setProjectName(cfg.getProjectName()); + sdata.setDeptName(cfg.getDeptName()); + if(sdata.getCompanyTypeId()==null){ + sdata.setCompanyTypeId("0"); + } + insertSurProjectAttendanceData(sdata); + }else{ + sdata.setId(list.get(0).getId()); + QuartzProjectAttendanceData upData=list.get(0); + String dt1=upData.getAttendanceTime(); // + String dt2=upData.getAttendanceOutTime(); + String dt3=sdata.getAttendanceTime(); + if (StrUtil.isEmpty(dt3)) { + return; + } + long time3=DateUtil.parse(dt3).getTime(); + if(StrUtil.isEmpty(dt2)){ + upData.setAttendanceOutTime(dt3); + //比较 dt1,dt2 进行交换 + long time2=DateUtil.parse(dt3).getTime(); + long time1=DateUtil.parse(dt1).getTime(); + if(time1>time2){ + upData.setAttendanceTime(dt3); + upData.setAttendanceOutTime(dt1); + } + }else{ + long time2=DateUtil.parse(dt2).getTime(); + long time1=DateUtil.parse(dt1).getTime(); + //比较 dt3dt3 + if(time3dt2 out->dt3 + if(time3>time2){ + upData.setAttendanceOutTime(dt3); + } + } + //upData.setAttendanceOutTime(sdata.getAttendanceTime()); + if("jgw".equals(upData.getVendorsCode())){ + upData.setRemark(sdata.getRemark()); + } + updateSurProjectAttendanceData(upData); + } + } + } + +} diff --git a/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/service/impl/QuartzProjectAttendanceGroupServiceImpl.java b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/service/impl/QuartzProjectAttendanceGroupServiceImpl.java new file mode 100644 index 00000000..547bee56 --- /dev/null +++ b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/service/impl/QuartzProjectAttendanceGroupServiceImpl.java @@ -0,0 +1,166 @@ +package com.yanzhu.job.service.impl; + +import cn.hutool.core.util.StrUtil; +import com.yanzhu.common.core.utils.DateUtils; +import com.yanzhu.common.security.utils.SecurityUtils; +import com.yanzhu.job.domain.QuartzProjectAttendanceGroup; +import com.yanzhu.job.mapper.QuartzProjectAttendanceGroupMapper; +import com.yanzhu.job.service.IQuartzProjectAttendanceGroupService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * 广联达班组信息Service业务层处理 + * + * @author ruoyi + * @date 2023-09-26 + */ +@Service +public class QuartzProjectAttendanceGroupServiceImpl implements IQuartzProjectAttendanceGroupService +{ + @Autowired + private QuartzProjectAttendanceGroupMapper quartzProjectAttendanceGroupMapper; + + /** + * 查询广联达班组信息 + * + * @param id 广联达班组信息主键 + * @return 广联达班组信息 + */ + @Override + public QuartzProjectAttendanceGroup selectSurProjectAttendanceGroupById(Long id) + { + return quartzProjectAttendanceGroupMapper.selectSurProjectAttendanceGroupById(id); + } + + /** + * 查询广联达班组信息列表 + * + * @param quartzProjectAttendanceGroup 广联达班组信息 + * @return 广联达班组信息 + */ + @Override + public List selectSurProjectAttendanceGroupViewList(QuartzProjectAttendanceGroup quartzProjectAttendanceGroup) + { + return quartzProjectAttendanceGroupMapper.selectSurProjectAttendanceGroupViewList(quartzProjectAttendanceGroup); + } + + /** + * 查询广联达班组信息列表 + * + * @param quartzProjectAttendanceGroup 广联达班组信息 + * @return 广联达班组信息集合 + */ + public List selectSurProjectAttendanceGroupList(QuartzProjectAttendanceGroup quartzProjectAttendanceGroup) { + return quartzProjectAttendanceGroupMapper.selectSurProjectAttendanceGroupList(quartzProjectAttendanceGroup); + } + /** + * 新增广联达班组信息 + * + * @param quartzProjectAttendanceGroup 广联达班组信息 + * @return 结果 + */ + @Override + public int insertSurProjectAttendanceGroup(QuartzProjectAttendanceGroup quartzProjectAttendanceGroup) + { + String userName= SecurityUtils.getUsername(); + quartzProjectAttendanceGroup.setCreateBy(StrUtil.isEmpty(userName)?"task":userName); + quartzProjectAttendanceGroup.setCreateTime(DateUtils.getNowDate()); + return quartzProjectAttendanceGroupMapper.insertSurProjectAttendanceGroup(quartzProjectAttendanceGroup); + } + + /** + * 修改广联达班组信息 + * + * @param quartzProjectAttendanceGroup 广联达班组信息 + * @return 结果 + */ + @Override + public int updateSurProjectAttendanceGroup(QuartzProjectAttendanceGroup quartzProjectAttendanceGroup) + { + String userName= SecurityUtils.getUsername(); + quartzProjectAttendanceGroup.setUpdateBy(StrUtil.isEmpty(userName)?"task":userName); + + quartzProjectAttendanceGroup.setUpdateTime(DateUtils.getNowDate()); + return quartzProjectAttendanceGroupMapper.updateSurProjectAttendanceGroup(quartzProjectAttendanceGroup); + } + + /** + * 批量删除广联达班组信息 + * + * @param ids 需要删除的广联达班组信息主键 + * @return 结果 + */ + @Override + public int deleteSurProjectAttendanceGroupByIds(Long[] ids) + { + return quartzProjectAttendanceGroupMapper.deleteSurProjectAttendanceGroupByIds(ids); + } + + /** + * 删除广联达班组信息信息 + * + * @param id 广联达班组信息主键 + * @return 结果 + */ + @Override + public int deleteSurProjectAttendanceGroupById(Long id) + { + return quartzProjectAttendanceGroupMapper.deleteSurProjectAttendanceGroupById(id); + } + + /** + * 批量删除广联达班组信息 + * + * @param list 需要删除的数据参数集合 + * @return 结果 + */ + @Override + public int deleteSurProjectAttendanceGroupByParams(List list) { + return quartzProjectAttendanceGroupMapper.deleteSurProjectAttendanceGroupByParams(list); + } + + /** + * 批量新增广联达班组信息 + * + * @param quartzProjectAttendanceGroupList 广联达班组信息列表 + * @return 结果 + */ + @Override + public int batchSurProjectAttendanceGroup(List quartzProjectAttendanceGroupList) { + return quartzProjectAttendanceGroupMapper.batchSurProjectAttendanceGroup(quartzProjectAttendanceGroupList); + } + + @Override + public void add(QuartzProjectAttendanceGroup group) { + QuartzProjectAttendanceGroup where=new QuartzProjectAttendanceGroup(); + where.setServerid(group.getServerid()); + where.setCfgid(group.getCfgid()); + List list=selectSurProjectAttendanceGroupList(where); + if(list.size()==0){ + insertSurProjectAttendanceGroup(group); + }else{ + group.setId(list.get(0).getId()); + updateSurProjectAttendanceGroup(group); + } + } + + /** + * 更新济工网的分组类型 + * @param group + */ + @Override + public void updateJgw(QuartzProjectAttendanceGroup group) { + QuartzProjectAttendanceGroup where=new QuartzProjectAttendanceGroup(); + where.setBizLicense(group.getBizLicense()); + where.setCompanyName(group.getCompanyName()); + where.setCfgid(group.getCfgid()); + List list=selectSurProjectAttendanceGroupList(where); + for(QuartzProjectAttendanceGroup g:list){ + g.setCompanyTypeId(group.getCompanyTypeId()); + updateSurProjectAttendanceGroup(g); + } + } +} diff --git a/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/service/impl/QuartzProjectAttendanceUserServiceImpl.java b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/service/impl/QuartzProjectAttendanceUserServiceImpl.java new file mode 100644 index 00000000..ef5d564a --- /dev/null +++ b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/service/impl/QuartzProjectAttendanceUserServiceImpl.java @@ -0,0 +1,315 @@ +package com.yanzhu.job.service.impl; + +import com.yanzhu.common.core.utils.DateUtils; +import com.yanzhu.common.core.utils.StringUtils; +import com.yanzhu.job.domain.QuartzProjectAttendanceCfg; +import com.yanzhu.job.domain.QuartzProjectAttendanceData; +import com.yanzhu.job.domain.QuartzProjectAttendanceUser; +import com.yanzhu.job.mapper.QuartzProjectAttendanceUserMapper; +import com.yanzhu.job.service.IQuartzProjectAttendanceUserService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * 考勤人员基本属性Service业务层处理 + * + * @author ruoyi + * @date 2023-09-24 + */ +@Service +public class QuartzProjectAttendanceUserServiceImpl implements IQuartzProjectAttendanceUserService +{ + @Autowired + private QuartzProjectAttendanceUserMapper quartzProjectAttendanceUserMapper; + + /** + * 查询考勤人员基本属性 + * + * @param id 考勤人员基本属性主键 + * @return 考勤人员基本属性 + */ + @Override + public QuartzProjectAttendanceUser selectSurProjectAttendanceUserById(Long id) + { + return quartzProjectAttendanceUserMapper.selectSurProjectAttendanceUserById(id); + } + + /** + * 查询考勤人员信息 + * + * @param quartzProjectAttendanceUser + * @return 考勤人员基本属性 + */ + @Override + public QuartzProjectAttendanceUser findCurrentAttendanceUser(QuartzProjectAttendanceUser quartzProjectAttendanceUser) { + return quartzProjectAttendanceUserMapper.findCurrentAttendanceUser(quartzProjectAttendanceUser); + } + + /** + * 查询[研筑]考勤人员信息 + * + * @param quartzProjectAttendanceUser + * @return 考勤人员基本属性 + */ + public QuartzProjectAttendanceUser findYzCurrentAttendanceUser(QuartzProjectAttendanceUser quartzProjectAttendanceUser){ + return quartzProjectAttendanceUserMapper.findYzCurrentAttendanceUser(quartzProjectAttendanceUser); + } + + /** + * 查询考勤人员基本属性列表 + * + * @param quartzProjectAttendanceUser 考勤人员基本属性 + * @return 考勤人员基本属性 + */ + @Override + public List selectSurProjectAttendanceUserList(QuartzProjectAttendanceUser quartzProjectAttendanceUser) + { + return quartzProjectAttendanceUserMapper.selectSurProjectAttendanceUserList(quartzProjectAttendanceUser); + } + + /** + * 新增考勤人员基本属性 + * + * @param quartzProjectAttendanceUser 考勤人员基本属性 + * @return 结果 + */ + @Override + public int insertSurProjectAttendanceUser(QuartzProjectAttendanceUser quartzProjectAttendanceUser) + { + if(StringUtils.isEmpty(quartzProjectAttendanceUser.getCreateBy())){ + quartzProjectAttendanceUser.setCreateBy("task"); + quartzProjectAttendanceUser.setCreateTime(DateUtils.getNowDate()); + } + return quartzProjectAttendanceUserMapper.insertSurProjectAttendanceUser(quartzProjectAttendanceUser); + } + + /** + * 修改考勤人员基本属性 + * + * @param quartzProjectAttendanceUser 考勤人员基本属性 + * @return 结果 + */ + @Override + public int updateSurProjectAttendanceUser(QuartzProjectAttendanceUser quartzProjectAttendanceUser) + { + if(StringUtils.isEmpty(quartzProjectAttendanceUser.getCreateBy())){ + quartzProjectAttendanceUser.setUpdateBy("task"); + } + quartzProjectAttendanceUser.setUpdateTime(DateUtils.getNowDate()); + return quartzProjectAttendanceUserMapper.updateSurProjectAttendanceUser(quartzProjectAttendanceUser); + } + + /** + * 批量删除考勤人员基本属性 + * + * @param ids 需要删除的考勤人员基本属性主键 + * @return 结果 + */ + @Override + public int deleteSurProjectAttendanceUserByIds(Long[] ids) + { + return quartzProjectAttendanceUserMapper.deleteSurProjectAttendanceUserByIds(ids); + } + + /** + * 删除考勤人员基本属性信息 + * + * @param id 考勤人员基本属性主键 + * @return 结果 + */ + @Override + public int deleteSurProjectAttendanceUserById(Long id) + { + return quartzProjectAttendanceUserMapper.deleteSurProjectAttendanceUserById(id); + } + + /** + * 批量删除考勤人员基本属性 + * + * @param list 需要删除的数据参数集合 + * @return 结果 + */ + @Override + public int deleteSurProjectAttendanceUserByParams(List list) { + return quartzProjectAttendanceUserMapper.deleteSurProjectAttendanceUserByParams(list); + } + + /** + * 批量新增考勤人员基本属性 + * + * @param quartzProjectAttendanceUserList 考勤人员基本属性列表 + * @return 结果 + */ + @Override + public int batchSurProjectAttendanceUser(List quartzProjectAttendanceUserList) { + return quartzProjectAttendanceUserMapper.batchSurProjectAttendanceUser(quartzProjectAttendanceUserList); + } + + @Override + public void add(QuartzProjectAttendanceUser user) { + QuartzProjectAttendanceUser where=new QuartzProjectAttendanceUser(); + where.setWorkerId(user.getWorkerId()); + where.setCfgid(user.getCfgid()); + List list=selectSurProjectAttendanceUserList(where); + if(list.size()==0){ + insertSurProjectAttendanceUser(user); + }else{ + QuartzProjectAttendanceUser old=list.get(0); + if(user.getVendorsCode().equals("jgw")){ + user.setCompanyId(old.getCompanyId()); + String oldNav=old.getNativePlace(); + String newNav=user.getNativePlace(); + if(oldNav==null || !oldNav.equals(newNav)){ + old.setNativePlace(newNav); + } + } + user.setId(old.getId()); + updateSurProjectAttendanceUser(user); + } + } + + @Override + public List queryAttendanceData(QuartzProjectAttendanceUser where) { + List list= quartzProjectAttendanceUserMapper.queryAttendanceUsers(where); + List workerIds=new ArrayList<>(); + for(QuartzProjectAttendanceUser u: list){ + workerIds.add(u.getWorkerId()); + } + where.setWorkerIds(workerIds); + List datas= quartzProjectAttendanceUserMapper.todayAttendanceData(workerIds); + for (QuartzProjectAttendanceUser u:list) { + u.setInTime(findDate(datas,u,"E")); + u.setOutTime(findDate(datas,u,"L")); + } + return list; + } + + @Override + public long countTodayAttendance(QuartzProjectAttendanceUser where) { + return quartzProjectAttendanceUserMapper.countTodayAttendance(where); + } + + @Override + public List todayAttendance(QuartzProjectAttendanceUser where) { + if(where.getIndex()<1){ + where.setIndex(1); + } + where.setIndex((where.getIndex()-1)* where.getSize()); + List list= quartzProjectAttendanceUserMapper.todayAttendance(where); + List workerIds=new ArrayList<>(); + for(QuartzProjectAttendanceUser u: list){ + workerIds.add(u.getWorkerId()); + } + List datas= quartzProjectAttendanceUserMapper.todayAttendanceData(workerIds); + for (QuartzProjectAttendanceUser u:list) { + u.setInTime(findDate(datas,u,"E")); + u.setOutTime(findDate(datas,u,"L")); + } + return list; + } + + @Override + public long countAttendance(QuartzProjectAttendanceUser user) { + QuartzProjectAttendanceCfg where=new QuartzProjectAttendanceCfg(); + where.setCreateBy(user.getCreateBy()); + where.setDeptId(user.getSubDeptId()); + where.setProjectId(user.getProjectId()); + return quartzProjectAttendanceUserMapper.countAttendance(where); + } + + @Override + public List selectSurProjectAttendanceUserListJgw(QuartzProjectAttendanceUser quartzProjectAttendanceUser) { + return quartzProjectAttendanceUserMapper.selectSurProjectAttendanceUserListJgw(quartzProjectAttendanceUser); + } + + /** + * 在岗工人查询 + * @param where + * @return + */ + @Override + public List queryWorkerOnDuty(QuartzProjectAttendanceUser where) { + return quartzProjectAttendanceUserMapper.queryWorkerOnDuty(where); + } + + /** + * 统计人员数据 + * @param where + * @return + */ + public List> groupUserByParams(QuartzProjectAttendanceUser where){ + return quartzProjectAttendanceUserMapper.groupUserByParams(where); + } + + /** + * 在岗工人查询 + * @param where + * @return + */ + @Override + public List attendanceUserList(QuartzProjectAttendanceUser where){ + return quartzProjectAttendanceUserMapper.attendanceUserList(where); + } + + /** + * 统计人员数据 + * @param projectId + * @return + */ + @Override + public List> findUserAllByDays(Long projectId){ + return quartzProjectAttendanceUserMapper.findUserAllByDays(projectId); + } + + /** + * 按部门汇总在岗人数 + * @param where + * @return + */ + @Override + public List groupByWorkerOnDutyByDept(QuartzProjectAttendanceUser where) { + return quartzProjectAttendanceUserMapper.groupByWorkerOnDutyByDept(where); + } + + @Override + public List querySurProjectAttendanceUserList(QuartzProjectAttendanceUser quartzProjectAttendanceUser) { + return quartzProjectAttendanceUserMapper.querySurProjectAttendanceUserList(quartzProjectAttendanceUser); + } + /** + * 按部门汇总在岗|离岗人数 + * @param where + * @return + */ + @Override + public List groupByWorkerByDept(QuartzProjectAttendanceUser where) { + return quartzProjectAttendanceUserMapper.groupByWorkerByDept(where); + } + /** + * 在岗|离岗工人查询 + * @param where + * @return + */ + @Override + public List queryWorkerByState(QuartzProjectAttendanceUser where) { + return quartzProjectAttendanceUserMapper.queryWorkerByState(where); + } + + private Date findDate(List datas, QuartzProjectAttendanceUser u, String type) { + for (QuartzProjectAttendanceUser user:datas) { + if(user.getWorkerId().equals(u.getWorkerId()) && user.getName().equals(type)){ + if(type.equals("L")){ + return user.getOutTime(); + }else{ + return user.getInTime(); + } + } + } + return null; + } + +} diff --git a/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/service/impl/SysApplyConfigServiceImpl.java b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/service/impl/SysApplyConfigServiceImpl.java new file mode 100644 index 00000000..7fe1b15d --- /dev/null +++ b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/service/impl/SysApplyConfigServiceImpl.java @@ -0,0 +1,161 @@ +package com.yanzhu.job.service.impl; + +import com.yanzhu.common.core.constant.CacheConstants; +import com.yanzhu.common.core.exception.ServiceException; +import com.yanzhu.common.core.utils.DateUtils; +import com.yanzhu.common.core.utils.RSAUtil; +import com.yanzhu.common.redis.service.RedisService; +import com.yanzhu.common.security.utils.SecurityUtils; +import com.yanzhu.job.domain.SysApplyConfig; +import com.yanzhu.job.mapper.SysApplyConfigMapper; +import com.yanzhu.job.service.ISysApplyConfigService; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import javax.annotation.PostConstruct; +import java.security.KeyPair; +import java.util.List; + +/** + * 系统应用注册Service业务层处理 + * + * @author JiangYuQi + * @date 2024-01-13 + */ +@Service +public class SysApplyConfigServiceImpl implements ISysApplyConfigService +{ + @Autowired + private RedisService redisCache; + + @Autowired + private SysApplyConfigMapper sysApplyConfigMapper; + + /** + * 项目启动时,初始化注册应用到缓存 + */ + @PostConstruct + public void init() + { + loadingSysApplyConfigCache(); + } + + /** + * 加载注册应用 + */ + @Override + public void loadingSysApplyConfigCache() + { + List configList = sysApplyConfigMapper.selectSysApplyConfigList(new SysApplyConfig()); + if(CollectionUtils.isNotEmpty(configList)){ + for (SysApplyConfig sysApplyConfig : configList) { + redisCache.setCacheObject(CacheConstants.YANZHU_SYSTEM_CONFIG + sysApplyConfig.getAppId(), sysApplyConfig); + } + } + } + + /** + * 查询系统应用注册 + * + * @param id 系统应用注册主键 + * @return 系统应用注册 + */ + @Override + public SysApplyConfig selectSysApplyConfigById(Long id) + { + return sysApplyConfigMapper.selectSysApplyConfigById(id); + } + + /** + * 查询系统应用注册列表 + * + * @param sysApplyConfig 系统应用注册 + * @return 系统应用注册 + */ + @Override + public List selectSysApplyConfigList(SysApplyConfig sysApplyConfig) + { + return sysApplyConfigMapper.selectSysApplyConfigList(sysApplyConfig); + } + + /** + * 新增系统应用注册 + * + * @param sysApplyConfig 系统应用注册 + * @return 结果 + */ + @Override + public int insertSysApplyConfig(SysApplyConfig sysApplyConfig) + { + sysApplyConfig.setCreateBy(SecurityUtils.getUsername()); + sysApplyConfig.setCreateTime(DateUtils.getNowDate()); + try { + // 生成密钥对 + KeyPair keyPair = RSAUtil.getKeyPair(); + // 公匙 + String publicKey = RSAUtil.getPublicKeyBase64(keyPair); + sysApplyConfig.setPublicKey(publicKey); + // 私匙 + String privateKey = RSAUtil.getPrivateKeyBase64(keyPair); + sysApplyConfig.setPrivateKey(privateKey); + }catch (Exception e){ + throw new ServiceException(); + } + int res = sysApplyConfigMapper.insertSysApplyConfig(sysApplyConfig); + if(res>0){ + this.loadingSysApplyConfigCache(); + } + return res; + } + + /** + * 修改系统应用注册 + * + * @param sysApplyConfig 系统应用注册 + * @return 结果 + */ + @Override + public int updateSysApplyConfig(SysApplyConfig sysApplyConfig) + { + sysApplyConfig.setUpdateBy(SecurityUtils.getUsername()); + sysApplyConfig.setUpdateTime(DateUtils.getNowDate()); + int res = sysApplyConfigMapper.updateSysApplyConfig(sysApplyConfig); + if(res>0){ + this.loadingSysApplyConfigCache(); + } + return res; + } + + /** + * 批量删除系统应用注册 + * + * @param ids 需要删除的系统应用注册主键 + * @return 结果 + */ + @Override + public int deleteSysApplyConfigByIds(Long[] ids) + { + int res = sysApplyConfigMapper.deleteSysApplyConfigByIds(ids); + if(res>0){ + this.loadingSysApplyConfigCache(); + } + return res; + } + + /** + * 删除系统应用注册信息 + * + * @param id 系统应用注册主键 + * @return 结果 + */ + @Override + public int deleteSysApplyConfigById(Long id) + { + int res = sysApplyConfigMapper.deleteSysApplyConfigById(id); + if(res>0){ + this.loadingSysApplyConfigCache(); + } + return res; + } +} diff --git a/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/service/impl/SysNativeServiceImpl.java b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/service/impl/SysNativeServiceImpl.java new file mode 100644 index 00000000..72f3d473 --- /dev/null +++ b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/service/impl/SysNativeServiceImpl.java @@ -0,0 +1,21 @@ +package com.yanzhu.job.service.impl; + +import com.yanzhu.job.domain.SysNative; +import com.yanzhu.job.mapper.SysNativeMapper; +import com.yanzhu.job.service.ISysNativeService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class SysNativeServiceImpl implements ISysNativeService { + + @Autowired + SysNativeMapper sysNativeMapper; + + @Override + public List selectSysNativeListById(Long id) { + return sysNativeMapper.selectSysNativeListById(id); + } +} diff --git a/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/task/AttendanceHuazhuTask.java b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/task/AttendanceHuazhuTask.java new file mode 100644 index 00000000..3b0a5766 --- /dev/null +++ b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/task/AttendanceHuazhuTask.java @@ -0,0 +1,351 @@ +package com.yanzhu.job.task; + +import cn.hutool.core.date.DateUtil; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import com.yanzhu.job.domain.QuartzProjectAttendanceCfg; +import com.yanzhu.job.domain.QuartzProjectAttendanceData; +import com.yanzhu.job.domain.QuartzProjectAttendanceGroup; +import com.yanzhu.job.domain.QuartzProjectAttendanceUser; +import com.yanzhu.job.service.IQuartzProjectAttendanceCfgService; +import com.yanzhu.job.service.IQuartzProjectAttendanceDataService; +import com.yanzhu.job.service.IQuartzProjectAttendanceGroupService; +import com.yanzhu.job.service.IQuartzProjectAttendanceUserService; +import okhttp3.*; +import org.apache.logging.log4j.util.Strings; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.*; + +@Component("attendanceHuazhuTask") +public class AttendanceHuazhuTask { + + @Autowired + IQuartzProjectAttendanceUserService attendanceUserService; + + @Autowired + IQuartzProjectAttendanceCfgService attendanceCfgService; + + @Autowired + IQuartzProjectAttendanceDataService attendanceDataService; + + @Autowired + IQuartzProjectAttendanceGroupService attendanceGroupService; + + public static void main(String[] args) { + //String host="http://tapi.huazhukeji.cn:82/hz-labour"; + String host="http://api.1357.cn/hz-labour"; + //String path="/api/open/labour/findWorkerTypeByPage"; + String path="/api/open/labour/findCardRecordByPage"; + HttpUrl.Builder urlBuilder = Objects.requireNonNull(HttpUrl.parse(host + path)) + .newBuilder(); + + + long startTime=DateUtil.date(DateUtil.parse("2024-03-16")).getTime(); + long endTime=startTime+3600l*1000*24*1; + Map headerParams=new HashMap<>(); + headerParams.put("appId","8024283707153666851"); + headerParams.put("appSecret","2070308b49399d94b401d98adeaa5b342aa81627"); + headerParams.put("Content-Type","application/json"); + + Map params = new HashMap<>(); + params.put("orgId","1666339529033805825"); + params.put("tenantId","1666337067184893953"); + params.put("workerId","7119618933040091136"); + params.put("size","200"); + params.put("current","1"); + params.put("startTime",startTime); + params.put("endTime",endTime); + + Request request = new Request.Builder() + .url(urlBuilder.build()) + .post(toFormBody(params)).headers(setHeaderParams(headerParams)) + .build(); + String data=AttendanceTask.getResult(request); + JSONObject jo= JSON.parseObject(data); + JSONObject joData= jo.getJSONObject("data"); + JSONArray arr=joData.getJSONArray("records"); + long pages=joData.getLong("pages"); + if(arr!=null && arr.size()>0){ + for(int i=0;i map=new HashMap<>(); + + map.put("appId","8024283707153666851"); + map.put("secret","2070308b49399d94b401d98adeaa5b342aa81627"); + map.put("projectId","1666339529033805825"); + map.put("tenantId","1666337067184893953"); + JSONObject jo=JSON.parseObject(JSON.toJSONString(map)); + int page=1; + QuartzProjectAttendanceCfg it=new QuartzProjectAttendanceCfg(); + it.setId(0l);; + //new AttendanceHuazhuTask().doSyncWorker(jo,1,it); + //long p=jo.getLongValue("page",1); + //jo.put("page",1); + //System.out.println(p); + //System.out.println(jo.toString()); + new AttendanceHuazhuTask().doSyncGroup(jo,1,it); + //new AttendanceHuazhuTask().doSyncWorker(jo,1,it); + } + private static RequestBody toFormBody(Map params ){ + String json=JSON.toJSONString(params); + return RequestBody.create( + MediaType.parse("application/json"),json ); + } + private static Headers setHeaderParams(Map headerParams) { + Headers headers = null; + Headers.Builder headersbuilder = new Headers.Builder(); + if (headerParams != null && headerParams.size() > 0) { + for (String key : headerParams.keySet()) { + if (!Strings.isEmpty(key) && !Strings.isEmpty(headerParams.get(key))) { + //如果参数不是null并且不是"",就拼接起来 + headersbuilder.add(key, headerParams.get(key)); + } + } + } + + headers = headersbuilder.build(); + return headers; + } + + /** + * 同步90天之内的数据 + */ + public void syncLast90DayAttendanceData() { + long endTime=DateUtil.current(); + long startTime=endTime-3600l*1000*24*90; + syncAttendanceData(startTime); + } + + /** + * 同步7天之内的数据 + */ + public void syncLastWeekAttendanceData() { + long endTime=DateUtil.current(); + long startTime=endTime-3600l*1000*24*7; + syncAttendanceData(startTime); + } + + /** + * 同步当天数据 + */ + public void syncAttendanceData(){ + long startTime=DateUtil.date(DateUtil.parse(DateUtil.format(new Date(),"yyyy-MM-dd"))).getTime(); + syncAttendanceData(startTime); + } + + public void syncGroup(){ + QuartzProjectAttendanceCfg where =new QuartzProjectAttendanceCfg(); + where.setEnabled(1l); + where.setIsDel(0l); + where.setVendorsCode("huazhu"); + List list=attendanceCfgService.selectSurProjectAttendanceCfgList(where); + for(QuartzProjectAttendanceCfg it :list){ + String param= it.getVendorsParameter(); + if(Strings.isNotEmpty(param)){ + try{ + JSONObject jo=JSON.parseObject(param); + doSyncGroup(jo,1,it); + }catch (Exception ex){ + ex.printStackTrace(); + } + } + } + } + + private void doSyncGroup(JSONObject jdata, long page, QuartzProjectAttendanceCfg it) { + String path="/api/open/labour/findUnitProjectByPage"; + Request request=getRequest(path,jdata,page); + String data=AttendanceTask.getResult(request); + JSONObject jo= JSON.parseObject(data); + JSONObject joData= jo.getJSONObject("data"); + JSONArray arr=joData.getJSONArray("records"); + long pages=joData.getLong("pages"); + if(arr!=null && arr.size()>0){ + for(int i=0;i list=attendanceCfgService.selectSurProjectAttendanceCfgList(where); + Map map=new HashMap<>(); + long endTime=DateUtil.current(); + + //map.put("endTime",endTime); + map.put("startTime",startTime); + for(QuartzProjectAttendanceCfg it :list){ + String param= it.getVendorsParameter(); + if(Strings.isNotEmpty(param)){ + try{ + JSONObject jo=JSON.parseObject(param); + doSyncAttendanceData(jo,1,it,map); + + }catch (Exception ex){ + ex.printStackTrace(); + } + } + } + } + + /** + * 同步所有数据 + */ + public void syncAllAttendanceData(){ + QuartzProjectAttendanceCfg where =new QuartzProjectAttendanceCfg(); + where.setEnabled(1l); + where.setIsDel(0l); + where.setVendorsCode("huazhu"); + List list=attendanceCfgService.selectSurProjectAttendanceCfgList(where); + for(QuartzProjectAttendanceCfg it :list){ + String param= it.getVendorsParameter(); + if(Strings.isNotEmpty(param)){ + try{ + JSONObject jo=JSON.parseObject(param); + QuartzProjectAttendanceData attWhere=new QuartzProjectAttendanceData(); + attWhere.setId(it.getId()); + Long page=attendanceDataService.getHuazhuPage(attWhere); + if(null==page){ + doSyncAttendanceData(jo,1,it,null); + }else{ + doSyncAttendanceData(jo,page,it,null); + } + + }catch (Exception ex){ + ex.printStackTrace(); + } + } + } + } + + private void doSyncAttendanceData(JSONObject jdata, long page, QuartzProjectAttendanceCfg it, Map ps){ + String path="/api/open/labour/findCardRecordByPage"; + Request request=getRequest(path,jdata,page,ps); + String data=AttendanceTask.getResult(request); + JSONObject jo= JSON.parseObject(data); + JSONObject joData= jo.getJSONObject("data"); + JSONArray arr=joData.getJSONArray("records"); + long pages=joData.getLong("pages"); + if(arr!=null && arr.size()>0){ + for(int i=0;i list=attendanceCfgService.selectSurProjectAttendanceCfgList(where); + for(QuartzProjectAttendanceCfg it :list){ + String param= it.getVendorsParameter(); + if(Strings.isNotEmpty(param)){ + try{ + JSONObject jo=JSON.parseObject(param); + + doSyncWorker(jo,1,it); + }catch (Exception ex){ + ex.printStackTrace(); + } + } + } + } + + public static Request getRequest(String path,JSONObject jo,long page) { + return getRequest(path,jo,page,null); + } + + public static Request getRequest(String path,JSONObject jo,long page,Map ps){ + String appId=jo.getString("appId"); + String secret=jo.getString("secret"); + String projectId=jo.getString("projectId"); + String tenantId=jo.getString("tenantId"); + String host="http://api.1357.cn/hz-labour"; + HttpUrl.Builder urlBuilder = Objects.requireNonNull(HttpUrl.parse(host + path)) + .newBuilder(); + + Map headerParams=new HashMap<>(); + headerParams.put("appId",appId); + headerParams.put("appSecret",secret); + headerParams.put("Content-Type","application/json"); + + Map params = new HashMap<>(); + params.put("orgId",projectId); + params.put("tenantId",tenantId); + params.put("size",500); + params.put("current",page); + if(ps!=null){ + for(String k :ps.keySet()){ + params.put(k,ps.get(k)); + } + } + + Request request = new Request.Builder() + .url(urlBuilder.build()) + .post(toFormBody(params)).headers(setHeaderParams(headerParams)) + .build(); + return request; + } + + private void doSyncWorker(JSONObject jdata, long page, QuartzProjectAttendanceCfg it){ + String path="/api/open/labour/findLabourWorkerByPage"; + Request request=getRequest(path,jdata,page); + String data=AttendanceTask.getResult(request); + JSONObject jo= JSON.parseObject(data); + JSONObject joData= jo.getJSONObject("data"); + JSONArray arr=joData.getJSONArray("records"); + long pages=joData.getLong("pages"); + if(arr!=null && arr.size()>0){ + for(int i=0;i list=sysNativeService.selectSysNativeListById(id); + if(list.size()==0){ + id=id/100*100; + list=sysNativeService.selectSysNativeListById(id); + if(list.size()==0){ + id=id/10000*10000; + list=sysNativeService.selectSysNativeListById(id); + } + } + if(list.size()==0){ + tmp=""; + }else{ + tmp= list.get(0).getAddress(); + } + redisService.setCacheObject(ckey, tmp, 1L, TimeUnit.DAYS); + return tmp; + } + private String getWorkTypeName(String appid,String token,String type,String key){ + String ckey="attendance_jgw_work_type_"+type; + Object obj=redisService.getCacheObject(ckey); + HashMap map=null; + if(obj==null){ + map=getJobTypeData(appid,token,type); + if(map!=null){ + redisService.setCacheObject(ckey, map, 1L, TimeUnit.DAYS); + }else{ + return "未知"; + } + }else{ + map=(HashMap)obj; + } + if(map.containsKey(key)){ + return map.get(key); + } + return "未知"; + } + static String host="http://api.gongyoumishu.com:80/gomeetapi/"; + + + //sign/photo/20240101/E24E76-C9A5CB-0000FF/1741751233297383424_8848.JPG + public static String getToken(String appid,String secret){ + String grantType="client_credential"; + String path="/webapi/credential"; + Map params = new HashMap<>(); + params.put("appId",appid); + params.put("secret",secret); + params.put("grantType",grantType); + Request request = new Request.Builder() + .url(host+path) + .post(toFormBody(params)) + .build(); + String data=AttendanceTask.getResult(request); + JSONObject jo= JSON.parseObject(data); + JSONObject joData= jo.getJSONObject("data"); + if(joData!=null){ + return joData.getString("token"); + + } + return null; + } + private static RequestBody toFormBody(Map params ){ + FormBody.Builder builder=new FormBody.Builder(); + for(String key :params.keySet()){ + builder.add(key,params.get(key).toString()); + } + return builder.build(); + } + public void clearAlllPhoto(){ + String filePath= resourcesConfig.getUploadPath(); + String path=filePath+"/jgw"; + long endTime=DateUtil.current(); + for(int i=365;i>=0;i--) { + Date dt = DateUtil.date(endTime - 3600l * 1000 * 24 * i); + String clearPath=path +"/" + DateUtil.format(dt, "YYYY/MM/dd"); + String url="/jgw/"+DateUtil.format(dt, "YYYY/MM/dd"); + clearDatePhone(clearPath,url); + } + } + public void clear3DayPhoto(){ + String filePath= resourcesConfig.getUploadPath(); + String path=filePath+"/jgw"; + long endTime=DateUtil.current(); + for(int i=3;i>=0;i--) { + Date dt = DateUtil.date(endTime - 3600l * 1000 * 24 * i); + String clearPath=path +"/" + DateUtil.format(dt, "YYYY/MM/dd"); + String url="/jgw/"+DateUtil.format(dt, "YYYY/MM/dd"); + clearDatePhone(clearPath,url); + } + } + + public void clearToDayPhoto(){ + String filePath= resourcesConfig.getUploadPath(); + String path=filePath+"/jgw"; + long endTime=DateUtil.current(); + Date dt = new Date(); + String clearPath=path +"/" + DateUtil.format(dt, "YYYY/MM/dd"); + String url="/jgw/"+DateUtil.format(dt, "YYYY/MM/dd"); + clearDatePhone(clearPath,url); + + } + private void clearDatePhone(String path,String url){ + File file=new File(path); + if(file.isDirectory()){ + QuartzProjectAttendanceData where=new QuartzProjectAttendanceData(); + where.setScanPhoto(url); + List list=attendanceDataService.selectSurProjectAttendanceDataList(where); + List names=new ArrayList<>(); + for(QuartzProjectAttendanceData it:list){ + names.add(it.getScanPhoto()); + } + for(String f : file.list()){ + try{ + String name= FileUtils.getName(f); + if(!findInNames(names,name)){ + FileUtil.del(path+"/"+f); + } + }catch (Exception ex){ + } + + } + } + } + + private boolean findInNames(List names, String name) { + for(String it :names){ + if(it.indexOf(name)>=0){ + return true; + } + } + return false; + } + + public static void main(String[] args){ + String d="sxyzxx2024suc"; + //System.out.println(Base64.encode(d)); + //System.out.println(DateTime.now().year()); + + String appid="6a6f24fe35b04ee0bcf31cfb46ed1051"; + String secret="c3h5enh4MjAyNHN1Yw=="; + //String prjId="db955e11ef774e63968a47c3dc2acc15";//"b67f1baa6dca4558a16bf90a4681b82e";// + //String prjId="cace2f676371427e8f6da20d2924f64e";//泾河新城荟锦坊二期 + String prjId="209aa0c01d8248b6a56a0921d1b88c83";//泾河新城锦樾坊项目 + String phone="15619028761"; + String token= getToken(appid,secret); + if(token==null || token.length()==0){ + return; + } + //System.out.println(token); + //System.out.println(DateUtil.format(DateTime.now(),"yyyy-MM-dd")); + String subcontractorId=new AttendanceJgwTask().getSubcontractor(appid,token,phone); + String leaderTeamId="b3774a8cd04c418dabf36bffbf276661"; + //System.out.println(subcontractorId); + + + //findWorkerByLeader(appid,token,leaderTeamId); + findDirectlyUnderTeam(appid,token,prjId,subcontractorId,0); + //queryProject(appid,token,phone,0);; + //findAddWorkerByProject(appid,token,prjId,0); + //findUpdateWorkerByProject(appid,token,prjId,0); + //findAttendanceByProject(appid,token,prjId,"0"); + //findTeamByProjectId(appid,token,prjId); + //findProContractorByProjectId(appid,token,prjId); + //getJobTypeData(appid,token,"0"); + //findDirectlyUnderTeam(appid,token,prjId); + } + public static void findDirectlyUnderTeam(String appId,String token,String projectId,String subcontractorId,int rowId){ + String path="/webapi/project/findDirectlyUnderTeam"; + String time = System.currentTimeMillis() + ""; + String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"×tamp=" + time; + //System.out.println(url); + String tokenSign = Md5Utils.hash(url); + //System.out.println(tokenSign); + Map params = new HashMap<>(); + params.put("appId",appId); + params.put("timestamp",time); + params.put("tokenSign",tokenSign); + params.put("projectId",projectId); + params.put("subcontractorId",subcontractorId); + params.put("rowId",rowId); + Request request = new Request.Builder() + .url(host+path) + .post(toFormBody(params)) + .build(); + String data=AttendanceTask.getResult(request); + //System.out.println(data); + JSONObject j= JSON.parseObject(data); + JSONObject jd=j.getJSONObject("data"); + JSONArray arr=jd.getJSONArray("teamList"); + if(arr.size()>0){ + for(int i=0;i"+jo.getString("teamName")); + } + + } + } + public static void queryProject(String appId,String token,String phone,int rowId){ + + String path="/webapi/project/queryProject"; + String time = System.currentTimeMillis() + ""; + String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"×tamp=" + time; + //System.out.println(url); + String tokenSign = Md5Utils.hash(url); + //System.out.println(tokenSign); + Map params = new HashMap<>(); + params.put("appId",appId); + params.put("timestamp",time); + params.put("tokenSign",tokenSign); + params.put("account",phone); + params.put("rowId",rowId); + Request request = new Request.Builder() + .url(host+path) + .post(toFormBody(params)) + .build(); + String data=AttendanceTask.getResult(request); + //System.out.println(data); + JSONObject j= JSON.parseObject(data); + JSONObject jd=j.getJSONObject("data"); + JSONArray arr=jd.getJSONArray("projectList"); + if(arr.size()>0){ + JSONObject jo=arr.getJSONObject(0); + + } + } + public String getSubcontractor(String appId,String token,String phone){ + String ckey = "attendance_jgw_Subcontractor_" + phone; + if(redisService!=null) { + Object obj = redisService.getCacheObject(ckey); + if(obj!=null){ + String str=(String)obj; + if(StrUtil.isNotEmpty(str)){ + return str; + } + } + } + + String path="/webapi/project/querySubcontractorByPhone"; + String time = System.currentTimeMillis() + ""; + String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"×tamp=" + time; + //System.out.println(url); + String tokenSign = Md5Utils.hash(url); + //System.out.println(tokenSign); + Map params = new HashMap<>(); + params.put("appId",appId); + params.put("timestamp",time); + params.put("tokenSign",tokenSign); + params.put("phone",phone); + Request request = new Request.Builder() + .url(host+path) + .post(toFormBody(params)) + .build(); + String data=AttendanceTask.getResult(request); + //System.out.println(data); + JSONObject j= JSON.parseObject(data); + JSONObject jd=j.getJSONObject("data"); + JSONArray arr=jd.getJSONArray("subcontractorList"); + if(arr.size()>0){ + JSONObject jo=arr.getJSONObject(0); + String tmp=jo.getString("subcontractorId"); + if(StrUtil.isNotEmpty(tmp) && redisService!=null){ + redisService.setCacheObject(ckey, tmp, 1L, TimeUnit.DAYS); + return tmp; + }else{ + return tmp; + } + } + return ""; + } + public static HashMap getJobTypeData(String appId,String token,String type){ + String path="/webapi/dictInfo/getJobTypeData"; + String time = System.currentTimeMillis() + ""; + String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"×tamp=" + time; + //System.out.println(url); + String tokenSign = Md5Utils.hash(url); + //System.out.println(tokenSign); + Map params = new HashMap<>(); + params.put("appId",appId); + params.put("timestamp",time); + params.put("tokenSign",tokenSign); + params.put("type",type); + Request request = new Request.Builder() + .url(host+path) + .post(toFormBody(params)) + .build(); + String data=AttendanceTask.getResult(request); + //System.out.println(data); + JSONObject j= JSON.parseObject(data); + JSONObject jd=j.getJSONObject("data"); + JSONArray arr=jd.getJSONArray("jobTypes"); + HashMap map=new HashMap<>(); + for(int i=0;i0){ + for(int i=0;i"+sdata.getRemark()); + } + //sdata.setScanPhoto(photoUrl); + } + findAttendanceByProject(appId,token,projectId,endId); + } + + } + + private String getPhoto(String appId,String token, String photo) { + String path="/webapi/dictInfo/getPhoyoAllPaths"; + String time = System.currentTimeMillis() + ""; + String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"×tamp=" + time; + String tokenSign = Md5Utils.hash(url); + Map params = new HashMap<>(); + params.put("appId",appId); + params.put("timestamp",time); + params.put("tokenSign",tokenSign); + params.put("filePath",photo); + + Request request = new Request.Builder() + .url(host+path) + .post(toFormBody(params)) + .build(); + String data=AttendanceTask.getResult(request); + JSONObject j= JSON.parseObject(data); + JSONObject joData= j.getJSONObject("data"); + String purl=joData.getString("result"); + byte[] buffer= HttpUtil.downloadBytes(purl); + String filePath= resourcesConfig.getUploadPath(); + try { + String name=FileUtil.getName(photo); + return "/jgw"+FileUtils.writeBytes(buffer, filePath+"/jgw",name); + }catch (Exception ex){ + return ""; + } + } + + + + + public static void findWorkerByLeader(String appId,String token,String leaderTeamId){ + String path="/webapi/project/findWorkerByLeader"; + String time = System.currentTimeMillis() + ""; + String startId="0"; + String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"×tamp=" + time; + + String tokenSign = Md5Utils.hash(url); + + Map params = new HashMap<>(); + params.put("appId",appId); + params.put("timestamp",time); + params.put("tokenSign",tokenSign); + params.put("leaderTeamId",leaderTeamId); + url=host+path; + Request request = new Request.Builder() + .url(host+path) + .post(toFormBody(params)) + .build(); + String data=AttendanceTask.getResult(request); + JSONObject j= JSON.parseObject(data); + JSONObject jd=j.getJSONObject("data"); + JSONArray arr=jd.getJSONArray("recordList"); + for(int i=0;i0){ + for(int i=0;i"+json.getString("teamName")); + } + } + } + public static void findTeamByProjectId(String appId,String token,String projectId){ + String path="webapi/project/findTeamByProjectId"; + String time = System.currentTimeMillis() + ""; + String startId="0"; + String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"×tamp=" + time; + + String tokenSign = Md5Utils.hash(url); + + Map params = new HashMap<>(); + params.put("appId",appId); + params.put("timestamp",time); + params.put("tokenSign",tokenSign); + params.put("projectId",projectId); + params.put("rowId",startId); + url=host+path+"?appId="+appId+"&tokenSign="+tokenSign+"&projectId="+projectId+"×tamp="+time+"&rowId="+startId; + Request request = new Request.Builder() + .url(url) + .get() + .build(); + String data=AttendanceTask.getResult(request); + JSONObject j= JSON.parseObject(data); + JSONObject joData= j.getJSONObject("data"); + JSONArray arr=joData.getJSONArray("teamList"); + if(arr.size()>0){ + for(int i=0;i params = new HashMap<>(); + params.put("appId",appId); + params.put("timestamp",time); + params.put("tokenSign",tokenSign); + params.put("phone",phone); + url=host+path+"?appId="+appId+"&tokenSign="+tokenSign+"&phone="+phone+"×tamp="+time; + Request request = new Request.Builder() + .url(url) + .post(toFormBody(params)) + .build(); + String data=AttendanceTask.getResult(request); + JSONObject j= JSON.parseObject(data); + JSONObject joData= j.getJSONObject("data"); + JSONArray arr=joData.getJSONArray("teamList"); + if(arr.size()>0){ + for(int i=0;i0){ + for(int i=0;i0) { + int cnt=0; + for(int i=0;i0) { + int cnt=0; + for(int i=0;i list=attendanceCfgService.selectSurProjectAttendanceCfgList(where); + for(QuartzProjectAttendanceCfg it :list){ + String param= it.getVendorsParameter(); + if(Strings.isNotEmpty(param)){ + try{ + JSONObject jo=JSON.parseObject(param); + String appId=jo.getString("appId"); + String secret=jo.getString("secret"); + secret=Base64.encode(secret); + jo.put("secret",secret); + String token= getToken(appId,secret); + jo.put("token",token); + doSyncWorker(jo,0l,it); + }catch (Exception ex){ + ex.printStackTrace(); + } + } + } + syncWorkerByLeader(); + } + + /** + * 同步群组和人的关系 + */ + public void syncWorkerByLeader(){ + QuartzProjectAttendanceCfg where =new QuartzProjectAttendanceCfg(); + where.setEnabled(1l); + where.setIsDel(0l); + where.setVendorsCode("jgw"); + List list=attendanceCfgService.selectSurProjectAttendanceCfgList(where); + for(QuartzProjectAttendanceCfg it :list){ + String param= it.getVendorsParameter(); + if(Strings.isNotEmpty(param)){ + try{ + JSONObject jo=JSON.parseObject(param); + String appId=jo.getString("appId"); + String secret=jo.getString("secret"); + secret=Base64.encode(secret); + jo.put("secret",secret); + String token= getToken(appId,secret); + jo.put("token",token); + QuartzProjectAttendanceGroup groupWhere=new QuartzProjectAttendanceGroup(); + groupWhere.setCfgid(it.getId()); + groupWhere.setLeaderPhone("directly"); + List groupList=attendanceGroupService.selectSurProjectAttendanceGroupList(groupWhere); + for(QuartzProjectAttendanceGroup g:groupList) { + if(StrUtil.isNotEmpty(g.getLeaderName()) && StrUtil.isNotEmpty(g.getCompanyId())) { + jo.put("subcontractorId", g.getLeaderName()); + jo.put("leaderTeamId", g.getCompanyId()); + jo.put("companyName", g.getCompanyName()); + dosyncWorkerByLeader(jo, 0l, it); + } + } + }catch (Exception ex){ + ex.printStackTrace(); + } + } + } + } + + private void dosyncWorkerByLeader(JSONObject jo, long startId, QuartzProjectAttendanceCfg it){ + String appId=jo.getString("appId"); + String token=jo.getString("token"); + String path="/webapi/project/findWorkerByLeader"; + String time = System.currentTimeMillis() + ""; + String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"×tamp=" + time; + String leaderTeamId=jo.getString("leaderTeamId"); + String tokenSign = Md5Utils.hash(url); + + Map params = new HashMap<>(); + params.put("appId",appId); + params.put("timestamp",time); + params.put("tokenSign",tokenSign); + params.put("leaderTeamId",leaderTeamId); + params.put("subcontractorId",jo.getString("subcontractorId")); + Request request = new Request.Builder() + .url(host+path) + .post(toFormBody(params)) + .build(); + String data=AttendanceTask.getResult(request); + JSONObject j= JSON.parseObject(data); + JSONObject jd=j.getJSONObject("data"); + JSONArray arr=jd.getJSONArray("recordList"); + if(arr!=null && arr.size()>0){ + for(int i=0;i userList=attendanceUserService.selectSurProjectAttendanceUserList(userWhere); + if(userList.size()>0){ + QuartzProjectAttendanceUser upUser=userList.get(0); + upUser.setCompanyId(json.getString("leaderTeamId")); + upUser.setWorkTypeName(json.getString("jobType")); + upUser.setCompanyName(jo.getString("companyName")); + attendanceUserService.updateSurProjectAttendanceUser(upUser); + } + } + } + } + private void doSyncWorker(JSONObject jo, long startId, QuartzProjectAttendanceCfg it) { + String appId=jo.getString("appId"); + String token=jo.getString("token"); + String projectId=jo.getString("projectId"); + String path="/webapi/project/findAddWorkerByProject"; + String time = System.currentTimeMillis() + ""; + String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"×tamp=" + time; + + String tokenSign = Md5Utils.hash(url); + + Map params = new HashMap<>(); + params.put("appId",appId); + params.put("timestamp",time); + params.put("tokenSign",tokenSign); + params.put("projectId",projectId); + params.put("startId",startId); + Request request = new Request.Builder() + .url(host+path) + .post(toFormBody(params)) + .build(); + String data=AttendanceTask.getResult(request); + JSONObject j= JSON.parseObject(data); + JSONObject joData= j.getJSONObject("data"); + long endId= joData.getLong("endId"); + JSONArray arr=joData.getJSONArray("workerList"); + if(arr.size()>0) { + for(int i=0;i6){ + try { + long idStr = Long.parseLong(idNumber.substring(0, 6)); + String natstr=getNative(idStr); + if(StrUtil.isNotEmpty(natstr)){ + user.setNativePlace(natstr); + } + }catch (Exception ex){ + + } + } + attendanceUserService.add(user); + } + doSyncWorker(jo,endId,it); + } + } + + /** + * 同步群组信息 + */ + public void syncGroup(){ + QuartzProjectAttendanceCfg where =new QuartzProjectAttendanceCfg(); + where.setEnabled(1l); + where.setIsDel(0l); + where.setVendorsCode("jgw"); + List list=attendanceCfgService.selectSurProjectAttendanceCfgList(where); + for(QuartzProjectAttendanceCfg it :list){ + String param= it.getVendorsParameter(); + if(Strings.isNotEmpty(param)){ + try{ + JSONObject jo=JSON.parseObject(param); + String appId=jo.getString("appId"); + String secret=jo.getString("secret"); + secret=Base64.encode(secret); + jo.put("secret",secret); + String token= getToken(appId,secret); + jo.put("token",token); + //doSyncGroup(jo,0l,it); + doSyncDirectlyUnderGroup(jo,0l,it); + doSyncProContractor(jo,0l,it); + }catch (Exception ex){ + ex.printStackTrace(); + } + } + } + } + + /** + * 查询参建单位 + * @param jo + * @param startId + * @param it + */ + private void doSyncProContractor(JSONObject jo, long startId, QuartzProjectAttendanceCfg it) { + String appId=jo.getString("appId"); + String token=jo.getString("token"); + String projectId=jo.getString("projectId"); + String path="/webapi/project/findProContractorByProjectId"; + String time = System.currentTimeMillis() + ""; + String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"×tamp=" + time; + + String tokenSign = Md5Utils.hash(url); + + Map params = new HashMap<>(); + params.put("appId",appId); + params.put("timestamp",time); + params.put("tokenSign",tokenSign); + params.put("projectId",projectId); + params.put("rowId",startId); + url=host+path+"?appId="+appId+"&tokenSign="+tokenSign+"&projectId="+projectId+"×tamp="+time+"&rowId="+startId; + Request request = new Request.Builder() + .url(url) + .get() + .build(); + String data=AttendanceTask.getResult(request); + JSONObject j= JSON.parseObject(data); + JSONObject joData= j.getJSONObject("data"); + JSONArray arr=joData.getJSONArray("proContractorList"); + if(arr.size()>0){ + long rowId=0; + for(int i=0;i0){ + doSyncProContractor(jo,rowId+1,it); + } + } + } + + /** + * 查询班组直隶 + * @param jo + * @param startId + * @param it + */ + private void doSyncDirectlyUnderGroup(JSONObject jo, long startId, QuartzProjectAttendanceCfg it) { + String appId=jo.getString("appId"); + String token=jo.getString("token"); + String projectId=jo.getString("projectId"); + String phone=jo.getString("phone"); + String subcontractorId=getSubcontractor(appId,token,phone); + String path="/webapi/project/findDirectlyUnderTeam"; + String time = System.currentTimeMillis() + ""; + String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"×tamp=" + time; + + String tokenSign = Md5Utils.hash(url); + + Map params = new HashMap<>(); + params.put("appId",appId); + params.put("timestamp",time); + params.put("tokenSign",tokenSign); + params.put("projectId",projectId); + params.put("subcontractorId",subcontractorId); + params.put("rowId",startId); + Request request = new Request.Builder() + .url(host+path) + .post(toFormBody(params)) + .build(); + String data=AttendanceTask.getResult(request); + JSONObject j= JSON.parseObject(data); + JSONObject joData= j.getJSONObject("data"); + JSONArray arr=joData.getJSONArray("teamList"); + if(arr.size()>0){ + long rowId=0; + for(int i=0;i list=attendanceGroupService.selectSurProjectAttendanceGroupList(where); + if(list.size()==0){ + attendanceGroupService.add(group); + }else{ + group.setId(list.get(0).getId()); + group.setCompanyTypeId(list.get(0).getCompanyTypeId()); + attendanceGroupService.updateSurProjectAttendanceGroup(group); + } + } + if(rowId>0){ + doSyncDirectlyUnderGroup(jo,rowId+1,it); + } + } + } + + /** + * 查询班组 + * @param jo + * @param startId + * @param it + */ + private void doSyncGroup(JSONObject jo, long startId, QuartzProjectAttendanceCfg it) { + String appId=jo.getString("appId"); + String token=jo.getString("token"); + String projectId=jo.getString("projectId"); + String path="/webapi/project/findTeamByProjectId"; + String time = System.currentTimeMillis() + ""; + String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"×tamp=" + time; + + String tokenSign = Md5Utils.hash(url); + + Map params = new HashMap<>(); + params.put("appId",appId); + params.put("timestamp",time); + params.put("tokenSign",tokenSign); + params.put("projectId",projectId); + params.put("rowId",startId); + url=host+path+"?appId="+appId+"&tokenSign="+tokenSign+"&projectId="+projectId+"×tamp="+time+"&rowId="+startId; + Request request = new Request.Builder() + .url(url) + .get() + .build(); + String data=AttendanceTask.getResult(request); + JSONObject j= JSON.parseObject(data); + JSONObject joData= j.getJSONObject("data"); + JSONArray arr=joData.getJSONArray("teamList"); + if(arr.size()>0){ + long rowId=0; + for(int i=0;i list=attendanceGroupService.selectSurProjectAttendanceGroupList(where); + if(list.size()==0){ + attendanceGroupService.add(group); + } + } + if(rowId>0){ + doSyncGroup(jo,rowId+1,it); + } + } + } + + /** + * 同步当天数据 + */ + public void syncAttendanceData(){ + String dtStart=DateUtil.format(DateTime.now(),"yyyy-MM-dd"); + String dtEnd=dtStart; + syncAttendanceData(dtStart,dtEnd); + clearToDayPhoto(); + } + + /** + * 同步7天之内数据 + */ + public void syncLastWeekAttendanceData(){ + String dtEnd=DateUtil.format(DateTime.now(),"yyyy-MM-dd"); + String dtStart=DateUtil.format(DateUtil.offsetDay(DateTime.now(),-7),"yyyy-MM-dd"); + syncAttendanceData(dtStart,dtEnd); + } + + /** + * 同步30天内数据 + */ + public void syncLast30DayAttendanceData(){ + String dtEnd=DateUtil.format(DateTime.now(),"yyyy-MM-dd"); + String dtStart=DateUtil.format(DateUtil.offsetDay(DateTime.now(),-30),"yyyy-MM-dd"); + syncAttendanceData(dtStart,dtEnd); + } + + + private void syncAttendanceData(String dtStart,String dtEnd){ + QuartzProjectAttendanceCfg where =new QuartzProjectAttendanceCfg(); + where.setEnabled(1l); + where.setIsDel(0l); + where.setVendorsCode("jgw"); + List list=attendanceCfgService.selectSurProjectAttendanceCfgList(where); + for(QuartzProjectAttendanceCfg it :list){ + String param= it.getVendorsParameter(); + if(Strings.isNotEmpty(param)){ + try{ + JSONObject jo=JSON.parseObject(param); + String appId=jo.getString("appId"); + String secret=jo.getString("secret"); + secret=Base64.encode(secret); + jo.put("secret",secret); + String token= getToken(appId,secret); + jo.put("token",token); + jo.put("startTime",dtStart); + jo.put("endTime",dtEnd); + doSyncAttendanceData(jo,"0",it); + }catch (Exception ex){ + ex.printStackTrace(); + } + } + } + } + + private void doSyncAttendanceData(JSONObject jo, String startId, QuartzProjectAttendanceCfg it) { + String appId=jo.getString("appId"); + String token=jo.getString("token"); + String projectId=jo.getString("projectId"); + String startTime=jo.getString("startTime"); + String endTime=jo.getString("endTime"); + String path="/webapi/project/findAttendanceByProject"; + String time = System.currentTimeMillis() + ""; + String url=host+path+"?appId=" + appId + "&tokenSign=" + token +"×tamp=" + time; + + String tokenSign = Md5Utils.hash(url); + Map params = new HashMap<>(); + params.put("appId",appId); + params.put("timestamp",time); + params.put("tokenSign",tokenSign); + params.put("projectId",projectId); + params.put("startId",startId); + params.put("startTime",startTime); + params.put("endTime",endTime); + Request request = new Request.Builder() + .url(host+path) + .post(toFormBody(params)) + .build(); + String data=AttendanceTask.getResult(request); + //System.out.println(data); + JSONObject j= JSON.parseObject(data); + JSONObject joData= j.getJSONObject("data"); + String endId= joData.getString("endId"); + JSONArray arr=joData.getJSONArray("workerAttList"); + //List addList=new ArrayList<>(); + if(arr!=null && arr.size()>0){ + for(int i=0;i"+sdata.getRemark()); + } + sdata.setVendorsCode(it.getVendorsCode()); + attendanceDataService.add(sdata); + //addList.add(sdata); + } + //attendanceDataService.addList(addList); + doSyncAttendanceData(jo,endId,it); + } + } + + +} diff --git a/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/task/AttendanceTask.java b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/task/AttendanceTask.java new file mode 100644 index 00000000..90dd52f5 --- /dev/null +++ b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/task/AttendanceTask.java @@ -0,0 +1,327 @@ +package com.yanzhu.job.task; + +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson2.JSON; +import com.alibaba.fastjson2.JSONArray; +import com.alibaba.fastjson2.JSONObject; +import com.yanzhu.common.redis.service.RedisService; +import com.yanzhu.job.domain.*; +import com.yanzhu.job.service.*; +import okhttp3.HttpUrl; +import okhttp3.OkHttpClient; +import okhttp3.Request; +import okhttp3.Response; +import org.apache.commons.codec.digest.DigestUtils; +import org.apache.logging.log4j.util.Strings; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.io.IOException; +import java.util.*; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +@Component("attendanceTask") +public class AttendanceTask { + + @Autowired + private RedisService redisCache; + + @Autowired + private ISysNativeService sysNativeService; + + @Autowired + IQuartzProjectAttendanceUserService attendanceUserService; + + @Autowired + IQuartzProjectAttendanceCfgService attendanceCfgService; + + @Autowired + IQuartzProjectAttendanceDataService attendanceDataService; + + @Autowired + IQuartzProjectAttendanceGroupService attendanceGroupService; + + private String getNative(long id){ + String ckey="attendance_jgw_native_"+id; + Object obj=redisCache.getCacheObject(ckey); + String tmp=""; + if(obj!=null){ + tmp=obj.toString(); + if(StrUtil.isNotEmpty(tmp)){ + return tmp; + } + } + List list=sysNativeService.selectSysNativeListById(id); + if(list.size()==0){ + id=id/100*100; + list=sysNativeService.selectSysNativeListById(id); + if(list.size()==0){ + id=id/10000*10000; + list=sysNativeService.selectSysNativeListById(id); + } + } + if(list.size()==0){ + tmp=""; + }else{ + tmp= list.get(0).getAddress(); + } + redisCache.setCacheObject(ckey, tmp, 1L, TimeUnit.DAYS); + return tmp; + } + + public void syncWorker(){ + QuartzProjectAttendanceCfg where =new QuartzProjectAttendanceCfg(); + where.setEnabled(1l); + where.setIsDel(0l); + where.setVendorsCode("gld"); + List list=attendanceCfgService.selectSurProjectAttendanceCfgList(where); + for(QuartzProjectAttendanceCfg it :list){ + String param= it.getVendorsParameter(); + if(Strings.isNotEmpty(param)){ + try{ + JSONObject jo=JSON.parseObject(param); + String appId=jo.getString("appId"); + String secret=jo.getString("secret"); + String projectId=jo.getString("projectId"); + doSyncWorker(appId,secret,projectId,1,it); + }catch (Exception ex){ + ex.printStackTrace(); + } + } + } + } + + public void syncGroup(){ + QuartzProjectAttendanceCfg where =new QuartzProjectAttendanceCfg(); + where.setEnabled(1l); + where.setIsDel(0l); + where.setVendorsCode("gld"); + List list=attendanceCfgService.selectSurProjectAttendanceCfgList(where); + for(QuartzProjectAttendanceCfg it :list){ + String param= it.getVendorsParameter(); + if(Strings.isNotEmpty(param)){ + try{ + JSONObject jo=JSON.parseObject(param); + String appId=jo.getString("appId"); + String secret=jo.getString("secret"); + String projectId=jo.getString("projectId"); + doSyncGroup(appId,secret,projectId,it); + }catch (Exception ex){ + ex.printStackTrace(); + } + } + } + } + + private void doSyncGroup(String appId, String secret, String projectId, QuartzProjectAttendanceCfg it) { + Map params = new HashMap<>(); + params.put("projectId", projectId); + params.put("appid",appId); + String sign = getSign(params,secret); + String host="https://glm.glodon.com/api/open"; + params.put("sign",sign); + String path="/worker/allGroup"; + HttpUrl.Builder urlBuilder = Objects.requireNonNull(HttpUrl.parse(host + path)).newBuilder(); + params.forEach((s, o) -> { + urlBuilder.addQueryParameter(s, (String) o); + }); + Request request = new Request.Builder() + .url(urlBuilder.build()) + .build(); + String data=getResult(request); + JSONObject jo= JSON.parseObject(data); + JSONArray arr=jo.getJSONArray("data"); + if(arr!=null && arr.size()>0) { + for (int i = 0; i < arr.size(); i++) { + JSONObject json=arr.getJSONObject(i); + QuartzProjectAttendanceGroup group= QuartzProjectAttendanceGroup.create(json); + group.setAppId(appId); + group.setCfgid(it.getId()); + attendanceGroupService.add(group); + } + } + } + + private void doSyncWorker(String appid, String secret, String projectld, int page, QuartzProjectAttendanceCfg it){ + Map params = new HashMap<>(); + params.put("projectId", projectld); + params.put("start", "2000-01-01 00:00:00"); + params.put("end", "2099-01-01 00:00:00"); + params.put("pageNo",""+page); + params.put("pageSize", "1000"); + params.put("appid",appid); + String sign = getSign(params,secret); + String host="https://glm.glodon.com/api/open"; + params.put("sign",sign); + String path="/worker/new/allWorkerInfo"; + HttpUrl.Builder urlBuilder = Objects.requireNonNull(HttpUrl.parse(host + path)).newBuilder(); + params.forEach((s, o) -> { + urlBuilder.addQueryParameter(s, (String) o); + }); + Request request = new Request.Builder() + .url(urlBuilder.build()) + .build(); + String data=getResult(request); + JSONObject jo= JSON.parseObject(data); + JSONArray arr=jo.getJSONArray("data"); + if(arr!=null && arr.size()>0){ + for(int i=0;i6){ + try { + long idStr = Long.parseLong(idNumber.substring(0, 6)); + String natstr=getNative(idStr); + if(StrUtil.isNotEmpty(natstr)){ + user.setNativePlace(natstr); + } + }catch (Exception ex){ + + } + } + user.setVendorsCode(it.getVendorsCode()); + user.setCfgid(it.getId()); + user.setAppId(appid); + attendanceUserService.add(user); + } + } + if(arr.size()==1000){ + doSyncWorker(appid,secret,projectld,page+1,it); + } + } + + public void syncAttendanceData(){ + QuartzProjectAttendanceCfg where =new QuartzProjectAttendanceCfg(); + where.setEnabled(1l); + where.setIsDel(0l); + where.setVendorsCode("gld"); + List list=attendanceCfgService.selectSurProjectAttendanceCfgList(where); + for(QuartzProjectAttendanceCfg it :list){ + String param= it.getVendorsParameter(); + if(Strings.isNotEmpty(param)){ + try{ + JSONObject jo=JSON.parseObject(param); + String appId=jo.getString("appId"); + String secret=jo.getString("secret"); + String projectId=jo.getString("projectId"); + QuartzProjectAttendanceData dwhere=new QuartzProjectAttendanceData(); + dwhere.setCfgid(it.getId()); + String startId=attendanceDataService.getLastServerId(dwhere); + doSyncAttendanceData(appId,secret,projectId,startId,it); + }catch (Exception ex){ + ex.printStackTrace(); + } + } + } + } + + private void doSyncAttendanceData(String appid, String secret, String projectId, String id, QuartzProjectAttendanceCfg it){ + Map params = new HashMap<>(); + params.put("projectId", projectId); + params.put("startId",""+id); + params.put("pageSize", "500"); + params.put("appid",appid); + String sign = getSign(params,secret); + String host="https://glm.glodon.com/api/open"; + params.put("sign",sign); + String path="/attendance/card"; + HttpUrl.Builder urlBuilder = Objects.requireNonNull(HttpUrl.parse(host + path)).newBuilder(); + params.forEach((s, o) -> { + urlBuilder.addQueryParameter(s, (String) o); + }); + Request request = new Request.Builder() + .url(urlBuilder.build()) + .build(); + String data=getResult(request); + JSONObject jo= JSON.parseObject(data); + JSONArray arr=jo.getJSONArray("data"); + String lastId= "0"; + if(arr!=null && arr.size()>0){ + for(int i=0;i"+id+","+lastId); + if(arr.size()==500){ + doSyncAttendanceData(appid,secret,projectId,lastId,it); + } + } + public static void main(String[] args){ + + System.out.println("-------1--------->AttendanceUserTask.syncWorker"); + Map params = new HashMap<>(); + params.put("projectId", "709599705953792"); + params.put("start", "2000-01-01 00:00:00"); + params.put("end", "2099-01-01 00:00:00"); + params.put("pageNo","1"); + params.put("pageSize", "1000"); + //params.put("pageNo", "1"); + params.put("startId", "0"); + params.put("appid","f24454233c5346fe82df6b8dd35e9d6d"); + String sign = getSign(params,"754619e2a33491b84a4d47838d2ffc0a"); + System.out.println("--->"+sign); + params.put("sign",sign); + String host="https://glm.glodon.com/api/open"; + String path="/worker/new/allWorkerInfo"; + HttpUrl.Builder urlBuilder = Objects.requireNonNull(HttpUrl.parse(host + path)).newBuilder(); + params.forEach((s, o) -> { + urlBuilder.addQueryParameter(s, (String) o); + }); + Request request = new Request.Builder() + .url(urlBuilder.build()) + .build(); + String data=getResult(request); + //System.out.println("data:"+data); + JSONObject jo= JSON.parseObject(data); + JSONArray jsonArray=jo.getJSONArray("data"); + for(int i=0;i paramsMap,String appSecret){ + List paramsList = new ArrayList<>(); + paramsMap.forEach((s, o) -> { + String stringBuilder = s + o; + paramsList.add(stringBuilder); + }); + StringBuilder beforeMd5 = new StringBuilder(); + beforeMd5.append(appSecret); + paramsList.stream() + .sorted(String::compareTo) + .collect(Collectors.toList()) + .forEach(beforeMd5::append); + beforeMd5.append(appSecret); + return DigestUtils.md5Hex(beforeMd5.toString()).toUpperCase(); + } +} diff --git a/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/task/SSLSocketClient.java b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/task/SSLSocketClient.java new file mode 100644 index 00000000..68849d60 --- /dev/null +++ b/yanzhu-modules/yanzhu-job/src/main/java/com/yanzhu/job/task/SSLSocketClient.java @@ -0,0 +1,62 @@ +package com.yanzhu.job.task; + +import javax.net.ssl.*; +import java.security.KeyStore; +import java.security.SecureRandom; +import java.security.cert.X509Certificate; +import java.util.Arrays; + +public class SSLSocketClient { + //获取这个SSLSocketFactory + public static SSLSocketFactory getSSLSocketFactory() { + try { + SSLContext sslContext = SSLContext.getInstance("SSL"); + sslContext.init(null, getTrustManager(), new SecureRandom()); + return sslContext.getSocketFactory(); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + //获取TrustManager + private static TrustManager[] getTrustManager() { + return new TrustManager[]{ + new X509TrustManager() { + @Override + public void checkClientTrusted(X509Certificate[] chain, String authType) { + } + + @Override + public void checkServerTrusted(X509Certificate[] chain, String authType) { + } + + @Override + public X509Certificate[] getAcceptedIssuers() { + return new X509Certificate[]{}; + } + } + }; + } + + //获取HostnameVerifier + public static HostnameVerifier getHostnameVerifier() { + return (s, sslSession) -> true; + } + + public static X509TrustManager getX509TrustManager() { + X509TrustManager trustManager = null; + try { + TrustManagerFactory trustManagerFactory = TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm()); + trustManagerFactory.init((KeyStore) null); + TrustManager[] trustManagers = trustManagerFactory.getTrustManagers(); + if (trustManagers.length != 1 || !(trustManagers[0] instanceof X509TrustManager)) { + throw new IllegalStateException("Unexpected default trust managers:" + Arrays.toString(trustManagers)); + } + trustManager = (X509TrustManager) trustManagers[0]; + } catch (Exception e) { + e.printStackTrace(); + } + + return trustManager; + } +} diff --git a/yanzhu-modules/yanzhu-job/src/main/resources/mapper/job/QuartzProjectAttendanceCfgMapper.xml b/yanzhu-modules/yanzhu-job/src/main/resources/mapper/job/QuartzProjectAttendanceCfgMapper.xml new file mode 100644 index 00000000..6ad1f743 --- /dev/null +++ b/yanzhu-modules/yanzhu-job/src/main/resources/mapper/job/QuartzProjectAttendanceCfgMapper.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + SELECT ac.id, ac.com_id, ac.project_id, ac.vendors_code, ac.vendors_parameter, ac.enabled, ac.state, ac.remark, ac.is_del, ac.create_by, ac.create_time, ac.update_by + , ac.update_time,dp.`dept_name` comp_name,pp.`project_name`,dic.`dict_label` vendors_name,sd.sub_dept_name dept_name,ac.dept_id + FROM attendance_cfg ac + LEFT JOIN sys_dept dp ON ac.`com_id`=dp.`dept_id` + LEFT JOIN pro_project_info pp ON ac.`project_id`=pp.`id` + left join pro_project_info_subdepts sd on ac.dept_id=sd.id + LEFT JOIN sys_dict_data dic ON ac.`vendors_code`=dic.`dict_value` AND dic.`dict_type`='attendance_vendors' + + + + + + + + \ No newline at end of file diff --git a/yanzhu-modules/yanzhu-job/src/main/resources/mapper/job/QuartzProjectAttendanceDataMapper.xml b/yanzhu-modules/yanzhu-job/src/main/resources/mapper/job/QuartzProjectAttendanceDataMapper.xml new file mode 100644 index 00000000..46377463 --- /dev/null +++ b/yanzhu-modules/yanzhu-job/src/main/resources/mapper/job/QuartzProjectAttendanceDataMapper.xml @@ -0,0 +1,573 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select + id, + cfgid, + app_id, + projectId, + projectName, + deptId, + deptName, + vendors_code, + serverid, + workerId, + workerName, + identification, + workerPhoto, + workerGender, + birthDate, + ethnic, + nativePlace, + phone, + workTypeName, + specWorkType, + groupName, + companyTypeId, + companyName, + attendance_time, + attendance_out_time, + scanPhoto, + teamId, + workTypeCode, + companyId, + vendorId, + device_code, + is_del, + create_by, + create_time, + update_by, + update_time, + remark + from sur_project_attendance_data_${year} + + + + + + + + + + + + insert into sur_project_attendance_data_${year} + + cfgid, + app_id, + projectId, + projectName, + deptId, + deptName, + vendors_code, + serverid, + workerId, + workerName, + identification, + workerPhoto, + workerGender, + birthDate, + ethnic, + nativePlace, + phone, + workTypeName, + specWorkType, + groupName, + companyTypeId, + companyName, + attendance_time, + attendance_out_time, + scanPhoto, + teamId, + workTypeCode, + companyId, + vendorId, + device_code, + is_del, + create_by, + create_time, + update_by, + update_time, + remark, + + + #{cfgid}, + #{appId}, + #{projectId}, + #{projectName}, + #{deptId}, + #{deptName}, + #{vendorsCode}, + #{serverid}, + #{workerId}, + #{workerName}, + #{identification}, + #{workerPhoto}, + #{workerGender}, + #{birthDate}, + #{ethnic}, + #{nativePlace}, + #{phone}, + #{workTypeName}, + #{specWorkType}, + #{groupName}, + #{companyTypeId}, + #{companyName}, + #{attendanceTime}, + #{attendanceOutTime}, + #{scanPhoto}, + #{teamId}, + #{workTypeCode}, + #{companyId}, + #{vendorId}, + #{deviceCode}, + #{isDel}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + + + + + update sur_project_attendance_data_${year} + + cfgid = #{cfgid}, + app_id = #{appId}, + projectId = #{projectId}, + projectName = #{projectName}, + deptId = #{deptId}, + deptName = #{deptName}, + vendors_code = #{vendorsCode}, + serverid = #{serverid}, + workerId = #{workerId}, + workerName = #{workerName}, + identification = #{identification}, + workerPhoto = #{workerPhoto}, + workerGender = #{workerGender}, + birthDate = #{birthDate}, + ethnic = #{ethnic}, + nativePlace = #{nativePlace}, + phone = #{phone}, + workTypeName = #{workTypeName}, + specWorkType = #{specWorkType}, + groupName = #{groupName}, + companyTypeId = #{companyTypeId}, + companyName = #{companyName}, + attendance_time = #{attendanceTime}, + attendance_out_time = #{attendanceOutTime}, + scanPhoto = #{scanPhoto}, + teamId = #{teamId}, + workTypeCode = #{workTypeCode}, + companyId = #{companyId}, + vendorId = #{vendorId}, + device_code = #{deviceCode}, + is_del = #{isDel}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + + where id = #{id} + + + + delete from sur_project_attendance_data_${year} where id = #{id} + + + + delete from sur_project_attendance_data_${year} where id in + + #{id} + + + + + delete from sur_project_attendance_data_${year} where CONCAT(app_id,'-',serverid,'-',workerId) in + + #{item} + + + + + insert into sur_project_attendance_data_${year}( id, cfgid, app_id, projectId, projectName, deptId, deptName, vendors_code, serverid, workerId, workerName, identification, workerPhoto, workerGender, birthDate, ethnic, nativePlace, phone, workTypeName, specWorkType, groupName, companyTypeId, + companyName, attendance_time, attendance_out_time, scanPhoto, teamId,workTypeCode, companyId, vendorId, device_code, is_del, create_by, create_time, update_by, update_time) values + + ( #{item.id}, #{item.cfgid},#{item.appId}, #{item.projectId}, #{item.projectName}, #{item.deptId}, #{item.deptName}, #{item.vendorsCode}, #{item.serverid}, #{item.workerId}, #{item.workerName}, #{item.identification},#{item.workerPhoto}, #{item.workerGender}, #{item.birthDate},#{item.ethnic}, #{item.nativePlace}, #{item.phone}, #{item.workTypeName}, #{item.specWorkType}, #{item.groupName}, #{item.companyTypeId}, + #{item.companyName}, #{item.attendanceTime}, #{item.attendanceOutTime}, #{item.scanPhoto},#{item.teamId}, #{item.workTypeCode}, #{item.companyId}, #{item.vendorId}, #{item.deviceCode},#{item.isDel}, #{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime}) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/yanzhu-modules/yanzhu-job/src/main/resources/mapper/job/QuartzProjectAttendanceGroupMapper.xml b/yanzhu-modules/yanzhu-job/src/main/resources/mapper/job/QuartzProjectAttendanceGroupMapper.xml new file mode 100644 index 00000000..37beccad --- /dev/null +++ b/yanzhu-modules/yanzhu-job/src/main/resources/mapper/job/QuartzProjectAttendanceGroupMapper.xml @@ -0,0 +1,233 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + select id, cfgid, app_id, serverid, bizLicense, companyCode, companyId, companyName, companyTypeId, vendorId, name, leaderName, leaderPhone, teamId, teamName, type, leaderId, deleted, createTimestamp, platformGroupId, platformTeamId, enterDate, exitDate, remark, is_del, create_by, create_time, update_by, update_time + from view_sur_project_attendance_group + + + + + + + + + + insert into sur_project_attendance_group + + cfgid, + app_id, + serverid, + bizLicense, + companyCode, + companyId, + companyName, + companyTypeId, + vendorId, + name, + leaderName, + leaderPhone, + teamId, + teamName, + type, + leaderId, + deleted, + createTimestamp, + platformGroupId, + platformTeamId, + enterDate, + exitDate, + remark, + is_del, + create_by, + create_time, + update_by, + update_time, + + + #{cfgid}, + #{appId}, + #{serverid}, + #{bizLicense}, + #{companyCode}, + #{companyId}, + #{companyName}, + #{companyTypeId}, + #{vendorId}, + #{name}, + #{leaderName}, + #{leaderPhone}, + #{teamId}, + #{teamName}, + #{type}, + #{leaderId}, + #{deleted}, + #{createTimestamp}, + #{platformGroupId}, + #{platformTeamId}, + #{enterDate}, + #{exitDate}, + #{remark}, + #{isDel}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + + + + + update sur_project_attendance_group + + cfgid = #{cfgid}, + app_id = #{appId}, + serverid = #{serverid}, + bizLicense = #{bizLicense}, + companyCode = #{companyCode}, + companyId = #{companyId}, + companyName = #{companyName}, + companyTypeId = #{companyTypeId}, + vendorId = #{vendorId}, + name = #{name}, + leaderName = #{leaderName}, + leaderPhone = #{leaderPhone}, + teamId = #{teamId}, + teamName = #{teamName}, + type = #{type}, + leaderId = #{leaderId}, + deleted = #{deleted}, + createTimestamp = #{createTimestamp}, + platformGroupId = #{platformGroupId}, + platformTeamId = #{platformTeamId}, + enterDate = #{enterDate}, + exitDate = #{exitDate}, + remark = #{remark}, + is_del = #{isDel}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + + where id = #{id} + + + + delete from sur_project_attendance_group where id = #{id} + + + + delete from sur_project_attendance_group where id in + + #{id} + + + + + delete from sur_project_attendance_group where CONCAT(app_id,'-',serverid) in + + #{item} + + + + + insert into sur_project_attendance_group(id,cfgid,app_id,serverid,bizLicense,companyCode,companyId,companyName,companyTypeId,vendorId,name,leaderName,leaderPhone,teamId,teamName,type,leaderId,deleted,createTimestamp,platformGroupId,platformTeamId,enterDate,exitDate,remark,create_by,create_time,update_by,update_time) values + + (#{item.id}, #{item.cfgid}, #{item.appId}, #{item.serverid}, #{item.bizLicense}, #{item.companyCode}, #{item.companyId}, #{item.companyName},#{item.companyTypeId}, #{item.vendorId}, #{item.name}, #{item.leaderName}, #{item.leaderPhone}, #{item.teamId}, #{item.teamName}, #{item.type}, #{item.leaderId}, #{item.deleted}, #{item.createTimestamp}, #{item.platformGroupId}, #{item.platformTeamId}, #{item.enterDate}, + #{item.exitDate}, #{item.remark}, #{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime}) + + + + \ No newline at end of file diff --git a/yanzhu-modules/yanzhu-job/src/main/resources/mapper/job/QuartzProjectAttendanceUserMapper.xml b/yanzhu-modules/yanzhu-job/src/main/resources/mapper/job/QuartzProjectAttendanceUserMapper.xml new file mode 100644 index 00000000..602be580 --- /dev/null +++ b/yanzhu-modules/yanzhu-job/src/main/resources/mapper/job/QuartzProjectAttendanceUserMapper.xml @@ -0,0 +1,812 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SELECT * FROM ( + SELECT a.*,b.project_id,b.sub_dept_id + FROM sur_project_attendance_user a,sur_project_attendance_cfg b + WHERE a.cfgid=b.id ) + sur_project_attendance_user + + + + + + + + + + + + + insert into sur_project_attendance_user + + cfgid, + app_id, + vendors_code, + workerId, + laborWorkerId, + workerCategory, + qrCode, + name, + ethnic, + nativePlace, + gender, + birthDate, + phone, + degreeName, + photo, + recentPhoto, + groupId, + groupName, + leader, + workTypeCode, + workTypeName, + specWorkType, + hatCode, + state, + enterDate, + exitDate, + companyId, + companyName, + vendorId, + teamId, + teamName, + enterType, + other, + remark, + is_del, + create_by, + create_time, + update_by, + update_time, + + + #{cfgid}, + #{appId}, + #{vendorsCode}, + #{workerId}, + #{laborWorkerId}, + #{workerCategory}, + #{qrCode}, + #{name}, + #{ethnic}, + #{nativePlace}, + #{gender}, + #{birthDate}, + #{phone}, + #{degreeName}, + #{photo}, + #{recentPhoto}, + #{groupId}, + #{groupName}, + #{leader}, + #{workTypeCode}, + #{workTypeName}, + #{specWorkType}, + #{hatCode}, + #{state}, + #{enterDate}, + #{exitDate}, + #{companyId}, + #{companyName}, + #{vendorId}, + #{teamId}, + #{teamName}, + #{enterType}, + #{other}, + #{remark}, + #{isDel}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + + + + + update sur_project_attendance_user + + cfgid = #{cfgid}, + app_id = #{appId}, + vendors_code = #{vendorsCode}, + workerId = #{workerId}, + laborWorkerId = #{laborWorkerId}, + workerCategory = #{workerCategory}, + qrCode = #{qrCode}, + name = #{name}, + ethnic = #{ethnic}, + nativePlace = #{nativePlace}, + gender = #{gender}, + birthDate = #{birthDate}, + phone = #{phone}, + degreeName = #{degreeName}, + photo = #{photo}, + recentPhoto = #{recentPhoto}, + groupId = #{groupId}, + groupName = #{groupName}, + leader = #{leader}, + workTypeCode = #{workTypeCode}, + workTypeName = #{workTypeName}, + specWorkType = #{specWorkType}, + hatCode = #{hatCode}, + state = #{state}, + enterDate = #{enterDate}, + exitDate = #{exitDate}, + companyId = #{companyId}, + companyName = #{companyName}, + vendorId = #{vendorId}, + teamId = #{teamId}, + teamName = #{teamName}, + enterType = #{enterType}, + other = #{other}, + remark = #{remark}, + is_del = #{isDel}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + + where id = #{id} + + + + delete from sur_project_attendance_user where id = #{id} + + + + delete from sur_project_attendance_user where id in + + #{id} + + + + + delete from sur_project_attendance_user where CONCAT(app_id,'-',workerId) in + + #{item} + + + + + insert into sur_project_attendance_user( id, cfgid, vendors_code, workerId, laborWorkerId, workerCategory, qrCode, name, ethnic, nativePlace, gender, birthDate, phone, degreeName, photo, recentPhoto, groupId, groupName, leader, workTypeCode, workTypeName, specWorkType, hatCode, state, enterDate, exitDate, companyId, companyName, vendorId, teamId, teamName, enterType, other, remark, is_del, create_by, create_time, update_by, update_time) values + + ( #{item.id}, #{item.cfgid}, #{item.vendorsCode}, #{item.workerId}, #{item.laborWorkerId}, #{item.workerCategory}, #{item.qrCode}, #{item.name}, #{item.ethnic}, #{item.nativePlace}, #{item.gender}, #{item.birthDate}, #{item.phone}, #{item.degreeName}, #{item.photo}, #{item.recentPhoto}, #{item.groupId}, #{item.groupName}, #{item.leader}, #{item.workTypeCode}, #{item.workTypeName}, #{item.specWorkType}, #{item.hatCode}, #{item.state}, #{item.enterDate}, #{item.exitDate}, #{item.companyId}, #{item.companyName}, #{item.vendorId}, #{item.teamId}, #{item.teamName}, #{item.enterType}, #{item.other}, #{item.remark}, #{item.isDel}, #{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime}) + + + + + ( + SELECT * FROM sur_project_attendance_data WHERE DATE(attendance_time)=date(#{createBy}) AND cfgid IN ( + SELECT id FROM sur_project_attendance_cfg WHERE project_id=#{projectId} AND sub_dept_id=#{subDeptId} + ) ) xx + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/yanzhu-modules/yanzhu-job/src/main/resources/mapper/job/SysApplyConfigMapper.xml b/yanzhu-modules/yanzhu-job/src/main/resources/mapper/job/SysApplyConfigMapper.xml new file mode 100644 index 00000000..7bf8280c --- /dev/null +++ b/yanzhu-modules/yanzhu-job/src/main/resources/mapper/job/SysApplyConfigMapper.xml @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + select sac.id, sac.cfg_type, sac.cfg_id, sac.app_id, sac.public_key, sac.private_key, sac.project_id, sp.projectName, sac.dept_id, sd.dept_name as deptName, sac.is_del, sac.create_by, sac.create_time, sac.update_by, sac.update_time, sac.remark from sys_apply_config sac + left join sur_project sp on sac.project_id = sp.id + left join sys_dept sd on sac.dept_id = sd.dept_id + + + + + + + + insert into sys_apply_config + + id, + cfg_type, + cfg_id, + app_id, + public_key, + private_key, + project_id, + dept_id, + is_del, + create_by, + create_time, + update_by, + update_time, + remark, + + + #{id}, + #{cfgType}, + #{cfgId}, + #{appId}, + #{publicKey}, + #{privateKey}, + #{projectId}, + #{deptId}, + #{isDel}, + #{createBy}, + #{createTime}, + #{updateBy}, + #{updateTime}, + #{remark}, + + + + + update sys_apply_config + + cfg_type = #{cfgType}, + cfg_id = #{cfgId}, + app_id = #{appId}, + public_key = #{publicKey}, + private_key = #{privateKey}, + project_id = #{projectId}, + dept_id = #{deptId}, + is_del = #{isDel}, + create_by = #{createBy}, + create_time = #{createTime}, + update_by = #{updateBy}, + update_time = #{updateTime}, + remark = #{remark}, + + where id = #{id} + + + + delete from sys_apply_config where id = #{id} + + + + delete from sys_apply_config where id in + + #{id} + + + + \ No newline at end of file diff --git a/yanzhu-modules/yanzhu-job/src/main/resources/mapper/job/SysNativeMapper.xml b/yanzhu-modules/yanzhu-job/src/main/resources/mapper/job/SysNativeMapper.xml new file mode 100644 index 00000000..c960a26a --- /dev/null +++ b/yanzhu-modules/yanzhu-job/src/main/resources/mapper/job/SysNativeMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + \ No newline at end of file