From 8b06d3e8898aa7019cfcc4cad3249ad80af6a8e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A7=9C=E7=8E=89=E7=90=A6?= <7507756+jiang_yuqi@user.noreply.gitee.com> Date: Thu, 28 Mar 2024 23:20:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/LabourApiController.java | 343 +++++++++++------- .../api/labour/domain/LabourSignetVo.java | 3 - .../common/utils/file/FileUploadUtils.java | 22 ++ .../common/utils/file/MimeTypeUtils.java | 2 +- .../common/utils/file/MultipartFileUtils.java | 18 +- .../common/utils/http/HttpClientUtil.java | 6 + .../com/ruoyi/common/utils/sign/Md5Utils.java | 30 ++ .../SurProjectAttendanceUserMapper.java | 8 + .../ISurProjectAttendanceUserService.java | 8 + .../SurProjectAttendanceUserServiceImpl.java | 10 + .../SurProjectAttendanceDataMapper.xml | 4 +- .../SurProjectAttendanceUserMapper.xml | 8 + 12 files changed, 315 insertions(+), 147 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/labour/controller/LabourApiController.java b/ruoyi-admin/src/main/java/com/ruoyi/api/labour/controller/LabourApiController.java index 7e25d05b..1f832fa5 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/labour/controller/LabourApiController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/labour/controller/LabourApiController.java @@ -7,21 +7,21 @@ import com.ruoyi.api.base.TokenReqVo; import com.ruoyi.api.labour.domain.LabourSignetVo; import com.ruoyi.common.annotation.Anonymous; import com.ruoyi.common.annotation.RateLimiter; +import com.ruoyi.common.config.RuoYiConfig; import com.ruoyi.common.constant.CacheConstants; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.domain.entity.SysUser; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.common.core.text.Convert; -import com.ruoyi.common.enums.HttpStatusEnum; -import com.ruoyi.common.enums.LimitType; -import com.ruoyi.common.enums.ShiFouEnum; -import com.ruoyi.common.enums.UserTypeEnum; +import com.ruoyi.common.enums.*; import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.AuthRsaUtils; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.bean.BeanUtils; +import com.ruoyi.common.utils.file.FileUploadUtils; +import com.ruoyi.common.utils.file.MultipartFileUtils; import com.ruoyi.common.utils.http.HttpClientUtil; import com.ruoyi.common.utils.sign.Md5Utils; import com.ruoyi.framework.web.service.SysLoginService; @@ -41,15 +41,14 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; +import org.springframework.web.multipart.MultipartFile; import javax.validation.ConstraintViolation; import javax.validation.Valid; import javax.validation.Validation; import java.util.*; +import java.util.concurrent.TimeUnit; /** * 劳务人员APIController @@ -141,6 +140,33 @@ public class LabourApiController extends BaseController { return loginService.unifiedLogin(appId, password); } + /** + * 推送工人证照、打卡图片 + * 限流规则[30秒内最多请求100次,限流策略IP] + * @param file 文件信息 + * @author JiangYuQi + * @date 2024-01-13 + */ + @ApiOperation(value = "推送工人证照、打卡图片") + @RateLimiter(limitType = LimitType.IP) + @PostMapping("/v1/pushProfileImage") + public AjaxResult pushProfileImage(MultipartFile file) { + if(file==null){ + throw new RuntimeException("请上传文件资源..."); + } + SysApplyConfig sysApplyConfig = redisCache.getCacheObject(CacheConstants.YANZHU_SYSTEM_CONFIG+super.getUsername()); + if(StringUtils.equals(ShiFouEnum.SHI.getCode(),sysApplyConfig.getIsDel())){ + throw new ServiceException(HttpStatusEnum.DISABLE.getInfo(),HttpStatusEnum.DISABLE.getCode()); + } + try { + // 上传并返回新文件名称 + String fileName = FileUploadUtils.upload(RuoYiConfig.getUploadPath(), file); + return success(fileName); + }catch (Exception e){ + throw new ServiceException(e.getMessage(),HttpStatusEnum.DARA_EXCEPTION.getCode()); + } + } + /** * 推送,修改班组信息 * 限流规则[30秒内最多请求100次,限流策略IP] @@ -289,6 +315,12 @@ public class LabourApiController extends BaseController { if(req.getDataSign(sysApplyConfig.getPrivateKey())){ try { SurProjectAttendanceUser surProjectAttendanceUser = JSONObject.parseObject(req.getData(), SurProjectAttendanceUser.class); + //判断base64图片 + if(StringUtils.isNotEmpty(surProjectAttendanceUser.getRecentPhotoBase64())){ + String filePath = FileUploadUtils.uploadImages(RuoYiConfig.getUploadPath(), MultipartFileUtils.base64ToMultipartFile(surProjectAttendanceUser.getRecentPhotoBase64())); + surProjectAttendanceUser.setRecentPhoto(filePath); + surProjectAttendanceUser.setRecentPhotoBase64(null); + } LabourUserVO labourUserVO = new LabourUserVO(); BeanUtils.copyBeanProp(labourUserVO,surProjectAttendanceUser); // 手动检测转换后的实体 @@ -358,6 +390,12 @@ public class LabourApiController extends BaseController { if(CollectionUtils.isNotEmpty(surProjectAttendanceUserList)){ for(int i=0;i> validateSet = Validation.buildDefaultValidatorFactory() - .getValidator() - .validate(labourDataVo, new Class[0]); - if(CollectionUtils.isEmpty(validateSet)){ - // 查询当前班组人员考勤是否已推送 - SurProjectAttendanceData findData = new SurProjectAttendanceData(); - findData.setAppId(sysApplyConfig.getAppId()); - findData.setWorkerId(surProjectAttendanceData.getWorkerId()); - findData.setAttendanceTime(labourDataVo.getAttendanceTime()); - SurProjectAttendanceData data = surProjectAttendanceDataService.findCurrentAttendanceData(findData); - if(data!=null){ - //这里不能修改出勤时间 - surProjectAttendanceData.setAttendanceTime(null); - surProjectAttendanceData.setAttendanceOutTime(labourDataVo.getAttendanceTime()); - surProjectAttendanceData.setUpdateBy(sysApplyConfig.getAppId()+"Api推送离场"); - surProjectAttendanceData.setUpdateTime(new Date()); - surProjectAttendanceDataService.updateSurProjectAttendanceData(surProjectAttendanceData); + //30秒内未重复请求 + if(Convert.toBool(redisCache.getCacheObject(CACHEKEY+surProjectAttendanceData.getWorkerId()),true)){ + //判断base64图片 + if(StringUtils.isNotEmpty(surProjectAttendanceData.getScanPhotoBase64())){ + String filePath = FileUploadUtils.uploadImages(RuoYiConfig.getUploadPath(), MultipartFileUtils.base64ToMultipartFile(surProjectAttendanceData.getScanPhotoBase64())); + surProjectAttendanceData.setScanPhoto(filePath); + surProjectAttendanceData.setScanPhotoBase64(null); + } + LabourDataVo labourDataVo = new LabourDataVo(); + BeanUtils.copyBeanProp(labourDataVo,surProjectAttendanceData); + // 手动检测转换后的实体 + Set> validateSet = Validation.buildDefaultValidatorFactory() + .getValidator() + .validate(labourDataVo, new Class[0]); + if(CollectionUtils.isEmpty(validateSet)){ + // 查询当前班组人员考勤是否已推送 + SurProjectAttendanceData findData = new SurProjectAttendanceData(); + findData.setCfgid(sysApplyConfig.getCfgId()); + findData.setAppId(sysApplyConfig.getAppId()); + findData.setWorkerId(surProjectAttendanceData.getWorkerId()); + findData.setAttendanceTime(labourDataVo.getAttendanceTime()); + SurProjectAttendanceData data = surProjectAttendanceDataService.findCurrentAttendanceData(findData); + if(data!=null){ + //这里不能修改出勤时间 + data.setAttendanceOutTime(labourDataVo.getAttendanceTime()); + data.setUpdateBy(sysApplyConfig.getAppId()+"Api推送离场打卡"); + data.setUpdateTime(new Date()); + surProjectAttendanceDataService.updateSurProjectAttendanceData(data); + }else{ + /** + * 查询人员考勤信息 + */ + SurProjectAttendanceUser findUser = new SurProjectAttendanceUser(); + findUser.setCfgid(sysApplyConfig.getCfgId()); + findUser.setWorkerId(surProjectAttendanceData.getWorkerId()); + SurProjectAttendanceUser surProjectAttendanceUser = surProjectAttendanceUserService.findYzCurrentAttendanceUser(findUser); + if(StringUtils.isNull(surProjectAttendanceUser)){ + throw new ServiceException("未查询到人员信息",HttpStatusEnum.DARA_EXCEPTION.getCode()); + } + if(StringUtils.isNull(surProjectAttendanceUser.getCompanyTypeId())){ + throw new ServiceException("人员部门类型信息不完整",HttpStatusEnum.DARA_EXCEPTION.getCode()); + } + surProjectAttendanceData.setAppId(sysApplyConfig.getAppId()); + surProjectAttendanceData.setCfgid(sysApplyConfig.getCfgId()); + surProjectAttendanceData.setCompanyId(surProjectAttendanceUser.getCompanyId()); + surProjectAttendanceData.setCompanyName(surProjectAttendanceUser.getCompanyName()); + surProjectAttendanceData.setWorkerName(surProjectAttendanceUser.getName()); + surProjectAttendanceData.setWorkerPhoto(surProjectAttendanceUser.getRecentPhoto()); + surProjectAttendanceData.setWorkerGender(surProjectAttendanceUser.getGender()); + surProjectAttendanceData.setBirthDate(surProjectAttendanceUser.getBirthDate()); + surProjectAttendanceData.setEthnic(surProjectAttendanceUser.getEthnic()); + surProjectAttendanceData.setNativePlace(surProjectAttendanceUser.getNativePlace()); + surProjectAttendanceData.setPhone(surProjectAttendanceUser.getPhone()); + surProjectAttendanceData.setWorkTypeName(surProjectAttendanceUser.getWorkTypeName()); + surProjectAttendanceData.setSpecWorkType(surProjectAttendanceUser.getSpecWorkType()); + surProjectAttendanceData.setGroupName(surProjectAttendanceUser.getGroupName()); + surProjectAttendanceData.setCompanyTypeId(surProjectAttendanceUser.getCompanyTypeId()); + surProjectAttendanceData.setWorkTypeCode(surProjectAttendanceUser.getWorkTypeCode()); + surProjectAttendanceData.setCreateBy(sysApplyConfig.getAppId()+"Api推送入场打卡"); + surProjectAttendanceData.setCreateTime(new Date()); + List list = new ArrayList<>(); + list.add(surProjectAttendanceData); + surProjectAttendanceDataService.batchSurProjectAttendanceData(list); + } + redisCache.setCacheObject(CACHEKEY+surProjectAttendanceData.getWorkerId(),false,30, TimeUnit.SECONDS); }else{ - /** - * 查询人员考勤信息 - */ - SurProjectAttendanceUser findUser = new SurProjectAttendanceUser(); - findUser.setCfgid(sysApplyConfig.getCfgId()); - findUser.setWorkerId(surProjectAttendanceData.getWorkerId()); - SurProjectAttendanceUser surProjectAttendanceUser = surProjectAttendanceUserService.findCurrentAttendanceUser(findUser); - if(StringUtils.isNull(surProjectAttendanceUser)){ - throw new ServiceException("未查询到人员信息",HttpStatusEnum.DARA_EXCEPTION.getCode()); - } - if(StringUtils.isNull(surProjectAttendanceUser.getCompanyTypeId())){ - throw new ServiceException("人员部门类型信息不完整",HttpStatusEnum.DARA_EXCEPTION.getCode()); - } - surProjectAttendanceData.setAppId(sysApplyConfig.getAppId()); - surProjectAttendanceData.setCfgid(sysApplyConfig.getCfgId()); - surProjectAttendanceData.setCompanyId(surProjectAttendanceUser.getCompanyId()); - surProjectAttendanceData.setCompanyName(surProjectAttendanceUser.getCompanyName()); - surProjectAttendanceData.setWorkerName(surProjectAttendanceUser.getName()); - surProjectAttendanceData.setWorkerPhoto(surProjectAttendanceUser.getRecentPhoto()); - surProjectAttendanceData.setWorkerGender(surProjectAttendanceUser.getGender()); - surProjectAttendanceData.setBirthDate(surProjectAttendanceUser.getBirthDate()); - surProjectAttendanceData.setEthnic(surProjectAttendanceUser.getEthnic()); - surProjectAttendanceData.setNativePlace(surProjectAttendanceUser.getNativePlace()); - surProjectAttendanceData.setPhone(surProjectAttendanceUser.getPhone()); - surProjectAttendanceData.setWorkTypeName(surProjectAttendanceUser.getWorkTypeName()); - surProjectAttendanceData.setSpecWorkType(surProjectAttendanceUser.getSpecWorkType()); - surProjectAttendanceData.setGroupName(surProjectAttendanceUser.getGroupName()); - surProjectAttendanceData.setCompanyTypeId(surProjectAttendanceUser.getCompanyTypeId()); - surProjectAttendanceData.setWorkTypeCode(surProjectAttendanceUser.getWorkTypeCode()); - surProjectAttendanceData.setCreateBy(sysApplyConfig.getAppId()+"Api推送入场"); - surProjectAttendanceData.setCreateTime(new Date()); - List list = new ArrayList<>(); - list.add(surProjectAttendanceData); - surProjectAttendanceDataService.batchSurProjectAttendanceData(list); + String messages = validateSet.stream() + .map(ConstraintViolation::getMessage) + .reduce((m1, m2) -> m1 + ";" + m2) + .orElse("参数输入有误!"); + throw new Exception(messages); } }else{ - String messages = validateSet.stream() - .map(ConstraintViolation::getMessage) - .reduce((m1, m2) -> m1 + ";" + m2) - .orElse("参数输入有误!"); - throw new Exception(messages); + return success("短时间重复打卡请求,本次已忽略...{}SUCCESS"); } }catch (Exception e){ log.error(e.getMessage()); @@ -536,52 +588,65 @@ public class LabourApiController extends BaseController { } } for(SurProjectAttendanceData surProjectAttendanceData:surProjectAttendanceDataList){ - // 查询当前班组人员考勤是否已推送 - SurProjectAttendanceData findData = new SurProjectAttendanceData(); - findData.setAppId(sysApplyConfig.getAppId()); - findData.setWorkerId(surProjectAttendanceData.getWorkerId()); - findData.setAttendanceTime(surProjectAttendanceData.getAttendanceTime()); - SurProjectAttendanceData data = surProjectAttendanceDataService.findCurrentAttendanceData(findData); - if(data!=null){ - //这里不能修改出勤时间 - surProjectAttendanceData.setAttendanceTime(null); - surProjectAttendanceData.setAttendanceOutTime(surProjectAttendanceData.getAttendanceTime()); - surProjectAttendanceData.setUpdateBy(sysApplyConfig.getAppId()+"Api推送离场"); - surProjectAttendanceData.setUpdateTime(new Date()); - surProjectAttendanceDataService.updateSurProjectAttendanceData(surProjectAttendanceData); - }else{ - /** - * 查询人员考勤信息 - */ - SurProjectAttendanceUser findUser = new SurProjectAttendanceUser(); - findUser.setCfgid(sysApplyConfig.getCfgId()); - findUser.setWorkerId(surProjectAttendanceData.getWorkerId()); - SurProjectAttendanceUser surProjectAttendanceUser = surProjectAttendanceUserService.findCurrentAttendanceUser(findUser); - if(StringUtils.isNull(surProjectAttendanceUser)){ - throw new ServiceException("未查询到人员信息",HttpStatusEnum.DARA_EXCEPTION.getCode()); + //30秒内未重复请求 + if(Convert.toBool(redisCache.getCacheObject(CACHEKEY+surProjectAttendanceData.getWorkerId()),true)){ + //判断base64图片 + if(StringUtils.isNotEmpty(surProjectAttendanceData.getScanPhotoBase64())){ + String filePath = FileUploadUtils.uploadImages(RuoYiConfig.getUploadPath(), MultipartFileUtils.base64ToMultipartFile(surProjectAttendanceData.getScanPhotoBase64())); + surProjectAttendanceData.setScanPhoto(filePath); + surProjectAttendanceData.setScanPhotoBase64(null); } - if(StringUtils.isNull(surProjectAttendanceUser.getCompanyTypeId())){ - throw new ServiceException("人员部门类型信息不完整",HttpStatusEnum.DARA_EXCEPTION.getCode()); + // 查询当前班组人员考勤是否已推送 + SurProjectAttendanceData findData = new SurProjectAttendanceData(); + findData.setAppId(sysApplyConfig.getAppId()); + findData.setWorkerId(surProjectAttendanceData.getWorkerId()); + findData.setAttendanceTime(surProjectAttendanceData.getAttendanceTime()); + SurProjectAttendanceData data = surProjectAttendanceDataService.findCurrentAttendanceData(findData); + if(data!=null){ + //这里不能修改出勤时间 + data.setAttendanceOutTime(surProjectAttendanceData.getAttendanceTime()); + data.setUpdateBy(sysApplyConfig.getAppId()+"Api推送离场打卡"); + surProjectAttendanceDataService.updateSurProjectAttendanceData(data); + }else{ + /** + * 查询人员考勤信息 + */ + SurProjectAttendanceUser findUser = new SurProjectAttendanceUser(); + findUser.setCfgid(sysApplyConfig.getCfgId()); + findUser.setWorkerId(surProjectAttendanceData.getWorkerId()); + SurProjectAttendanceUser surProjectAttendanceUser = surProjectAttendanceUserService.findYzCurrentAttendanceUser(findUser); + if(StringUtils.isNull(surProjectAttendanceUser)){ + throw new ServiceException("未查询到人员信息",HttpStatusEnum.DARA_EXCEPTION.getCode()); + } + if(StringUtils.isNull(surProjectAttendanceUser.getCompanyTypeId())){ + throw new ServiceException("人员部门类型信息不完整",HttpStatusEnum.DARA_EXCEPTION.getCode()); + } + surProjectAttendanceData.setCfgid(sysApplyConfig.getCfgId()); + surProjectAttendanceData.setAppId(sysApplyConfig.getAppId()); + surProjectAttendanceData.setProjectId(sysApplyConfig.getProjectId()); + surProjectAttendanceData.setProjectName(sysApplyConfig.getProjectName()); + surProjectAttendanceData.setDeptId(sysApplyConfig.getDeptId()); + surProjectAttendanceData.setDeptName(sysApplyConfig.getDeptName()); + surProjectAttendanceData.setVendorsCode(VendorsCodeEnum.YANZHU.getCode()); + surProjectAttendanceData.setCompanyId(surProjectAttendanceUser.getCompanyId()); + surProjectAttendanceData.setCompanyName(surProjectAttendanceUser.getCompanyName()); + surProjectAttendanceData.setWorkerName(surProjectAttendanceUser.getName()); + surProjectAttendanceData.setWorkerPhoto(surProjectAttendanceUser.getRecentPhoto()); + surProjectAttendanceData.setWorkerGender(surProjectAttendanceUser.getGender()); + surProjectAttendanceData.setBirthDate(surProjectAttendanceUser.getBirthDate()); + surProjectAttendanceData.setEthnic(surProjectAttendanceUser.getEthnic()); + surProjectAttendanceData.setNativePlace(surProjectAttendanceUser.getNativePlace()); + surProjectAttendanceData.setPhone(surProjectAttendanceUser.getPhone()); + surProjectAttendanceData.setWorkTypeName(surProjectAttendanceUser.getWorkTypeName()); + surProjectAttendanceData.setSpecWorkType(surProjectAttendanceUser.getSpecWorkType()); + surProjectAttendanceData.setGroupName(surProjectAttendanceUser.getGroupName()); + surProjectAttendanceData.setCompanyTypeId(surProjectAttendanceUser.getCompanyTypeId()); + surProjectAttendanceData.setWorkTypeCode(surProjectAttendanceUser.getWorkTypeCode()); + surProjectAttendanceData.setCreateBy(sysApplyConfig.getAppId()+"Api推送入场打卡"); + surProjectAttendanceData.setCreateTime(new Date()); + saveList.add(surProjectAttendanceData); } - surProjectAttendanceData.setAppId(sysApplyConfig.getAppId()); - surProjectAttendanceData.setCfgid(sysApplyConfig.getCfgId()); - surProjectAttendanceData.setCompanyId(surProjectAttendanceUser.getCompanyId()); - surProjectAttendanceData.setCompanyName(surProjectAttendanceUser.getCompanyName()); - surProjectAttendanceData.setWorkerName(surProjectAttendanceUser.getName()); - surProjectAttendanceData.setWorkerPhoto(surProjectAttendanceUser.getRecentPhoto()); - surProjectAttendanceData.setWorkerGender(surProjectAttendanceUser.getGender()); - surProjectAttendanceData.setBirthDate(surProjectAttendanceUser.getBirthDate()); - surProjectAttendanceData.setEthnic(surProjectAttendanceUser.getEthnic()); - surProjectAttendanceData.setNativePlace(surProjectAttendanceUser.getNativePlace()); - surProjectAttendanceData.setPhone(surProjectAttendanceUser.getPhone()); - surProjectAttendanceData.setWorkTypeName(surProjectAttendanceUser.getWorkTypeName()); - surProjectAttendanceData.setSpecWorkType(surProjectAttendanceUser.getSpecWorkType()); - surProjectAttendanceData.setGroupName(surProjectAttendanceUser.getGroupName()); - surProjectAttendanceData.setCompanyTypeId(surProjectAttendanceUser.getCompanyTypeId()); - surProjectAttendanceData.setWorkTypeCode(surProjectAttendanceUser.getWorkTypeCode()); - surProjectAttendanceData.setCreateBy(sysApplyConfig.getAppId()+"Api推送入场"); - surProjectAttendanceData.setCreateTime(new Date()); - saveList.add(surProjectAttendanceData); + redisCache.setCacheObject(CACHEKEY+surProjectAttendanceData.getWorkerId(),false,30, TimeUnit.SECONDS); } } if(StringUtils.isNotEmpty(saveList)){ @@ -598,15 +663,15 @@ public class LabourApiController extends BaseController { } private static final String publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDCZjinQdEjtWt+4EiXIa/xVz4pfcOPYzZUMCAh1xXG9+2j6Wb++XoajlgVxjL/XkK3CnZh9PjrUxWpnQKEVt+QyIS1O0yCiZjMzaQ4sHoMs4uPYh8fyYAuL4uF/6R2x0/PL460quC1aMTmdSdXWLlIiwk5ZRm7YB/k1Nb/P91MKwIDAQAB"; - private static final String baseUrl = "https://szgc.jhncidg.com/jhapi"; - private static final String token = "eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImYyZmUzYTFhLWI2NDQtNGVmZC05NTZiLTYyMDk3Y2I5M2JmNSJ9.B_Rszwgn_pE3cZDNyjY9Di6BVxzslJYlBVmpo-6IiG4LJst4o0-WvSE3lRgamMr006Ey_L04SBlildae8PH4BQ"; + private static final String baseUrl = "http://localhost:8090/jhapi"; + private static final String token = "eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6ImY4NWNjMzg4LTUxNjktNDMyYy04NGZkLWVlMTU3ZjNhZWNlZSJ9.39a7QLeX4JiRksudVkZPV1IsztQwNe6b8AYaG7_-2P5MyE93QyIxvaQQO1gxKVYQ_UoCdihInUwC-mCFoizHWg"; /** * 推送,修改班组信息【示例代码】 */ public static String getToken(){ String timestamp = String.valueOf(System.currentTimeMillis()); - String appId = "jhcf170515993052073qrDFKJmk001"; + String appId = "jhcf17054840354615gUkkFJvTn003"; try { // 明文信息->公钥加密 String encryptByPublicKeyStr = AuthRsaUtils.encryptByPublicKey(publicKey, appId+timestamp); @@ -728,7 +793,8 @@ public class LabourApiController extends BaseController { map.put("typeName",1); map.put("ethnic","1213"); map.put("gender",1); - map.put("recentPhoto","http:///api/labour/v1/pushLabourUser/123"); + map.put("recentPhoto","-"); + map.put("recentPhotoBase64","data:image/png;base64,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"); map.put("nativePlace","张三111"); map.put("enterDate",1); map.put("state",1); @@ -910,29 +976,30 @@ public class LabourApiController extends BaseController { } public static void main(String[] args) { - String baseUrl = "https://szgc.jhncidg.com/jhapi"; - String timestamp = String.valueOf(System.currentTimeMillis()); - String appId = "jhcf17054840354615gUkkFJvTn003"; - try { - // 明文信息->公钥加密 - String encryptByPublicKeyStr = AuthRsaUtils.encryptByPublicKey(publicKey, appId+timestamp); - log.info("公钥加密...{}" , encryptByPublicKeyStr); - // redis中查询->未查询到则重新获取 - String url = baseUrl + "/api/labour/v1/getToken"; - Map body = new HashMap<>(); - body.put("appId",appId); - body.put("sign",encryptByPublicKeyStr); - body.put("timestamp",timestamp); - String result = HttpClientUtil.doPost(url, null, com.alibaba.fastjson2.JSON.toJSONString(body)); - JSONObject jsonObject = JSONObject.parseObject(result); - if(jsonObject.getInteger("code")==200){ - // 获取到存入redis,设置30分钟有效期 - String token = jsonObject.getString("Authorization"); - log.info("Authorization...{}" , token); - } - }catch (Exception e){ - e.printStackTrace(); - } +// String baseUrl = "http://localhost:8090/jhapi"; +// String timestamp = String.valueOf(System.currentTimeMillis()); +// String appId = "jhcf17054840354615gUkkFJvTn003"; +// try { +// // 明文信息->公钥加密 +// String encryptByPublicKeyStr = AuthRsaUtils.encryptByPublicKey(publicKey, appId+timestamp); +// log.info("公钥加密...{}" , encryptByPublicKeyStr); +// // redis中查询->未查询到则重新获取 +// String url = baseUrl + "/api/labour/v1/getToken"; +// Map body = new HashMap<>(); +// body.put("appId",appId); +// body.put("sign",encryptByPublicKeyStr); +// body.put("timestamp",timestamp); +// String result = HttpClientUtil.doPost(url, null, com.alibaba.fastjson2.JSON.toJSONString(body)); +// JSONObject jsonObject = JSONObject.parseObject(result); +// if(jsonObject.getInteger("code")==200){ +// // 获取到存入redis,设置30分钟有效期 +// String token = jsonObject.getString("Authorization"); +// log.info("Authorization...{}" , token); +// } +// }catch (Exception e){ +// e.printStackTrace(); +// } + pushLabourUser(); } } diff --git a/ruoyi-admin/src/main/java/com/ruoyi/api/labour/domain/LabourSignetVo.java b/ruoyi-admin/src/main/java/com/ruoyi/api/labour/domain/LabourSignetVo.java index 67091400..f470a707 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/api/labour/domain/LabourSignetVo.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/api/labour/domain/LabourSignetVo.java @@ -1,7 +1,5 @@ package com.ruoyi.api.labour.domain; -import com.ruoyi.common.enums.HttpStatusEnum; -import com.ruoyi.common.exception.ServiceException; import com.ruoyi.common.utils.AuthRsaUtils; import com.ruoyi.common.utils.StringUtils; import com.ruoyi.common.utils.sign.Md5Utils; @@ -10,7 +8,6 @@ import lombok.extern.slf4j.Slf4j; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; -import javax.validation.constraints.Size; /** * 劳务人员签名推送信息 请求参数 diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java index f61c3c38..9a043c42 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java @@ -1,9 +1,11 @@ package com.ruoyi.common.utils.file; import java.io.File; +import java.io.FileOutputStream; import java.io.IOException; import java.nio.file.Paths; import java.util.Arrays; +import java.util.Base64; import java.util.List; import java.util.Objects; @@ -91,6 +93,26 @@ public class FileUploadUtils } } + /** + * 根据文件路径上传 + * + * @param baseDir 相对应用的基目录 + * @param file 上传的文件[图片] + * @return 文件名称 + * @throws IOException + */ + public static final String uploadImages(String baseDir, MultipartFile file) throws IOException + { + try + { + return upload(baseDir, file, MimeTypeUtils.IMAGE_EXTENSION); + } + catch (Exception e) + { + throw new IOException(e.getMessage(), e); + } + } + /** * 文件上传 * diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/MimeTypeUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/MimeTypeUtils.java index f968f1a1..a995cb02 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/MimeTypeUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/MimeTypeUtils.java @@ -17,7 +17,7 @@ public class MimeTypeUtils public static final String IMAGE_GIF = "image/gif"; - public static final String[] IMAGE_EXTENSION = { "bmp", "gif", "jpg", "jpeg", "png" }; + public static final String[] IMAGE_EXTENSION = { "jpg", "jpeg", "png" }; public static final String[] FLASH_EXTENSION = { "swf", "flv" }; diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/MultipartFileUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/MultipartFileUtils.java index bb47374f..b1177d29 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/MultipartFileUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/MultipartFileUtils.java @@ -11,11 +11,23 @@ import java.util.Base64; */ public class MultipartFileUtils { + /** + * 换为Base64为文件 + * @param + * @return + */ public static MultipartFile base64ToMultipartFile(String base64) throws IOException { String[] parts = base64.split(","); - String contentType = parts[0].split(";")[0].split(":")[1]; - byte[] bytes = Base64.getDecoder().decode(parts[1]); - return new MockMultipartFile("file", "file", contentType, bytes); + if(parts.length>1){ + String contentType = parts[0].split(";")[0].split(":")[1]; + byte[] bytes = Base64.getDecoder().decode(parts[1]); + return new MockMultipartFile("file","file."+contentType.split("/")[1], contentType, bytes); + }else{ + //默认格式为pdf + String contentType = "image/jpeg"; + byte[] bytes = Base64.getDecoder().decode(base64); + return new MockMultipartFile("file", "file"+contentType.split("/")[1], contentType, bytes); + } } } diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/http/HttpClientUtil.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/http/HttpClientUtil.java index 5586b198..e000c971 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/http/HttpClientUtil.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/http/HttpClientUtil.java @@ -2,7 +2,9 @@ package com.ruoyi.common.utils.http; import com.ruoyi.common.utils.StringUtils; import lombok.extern.slf4j.Slf4j; +import org.apache.http.Consts; import org.apache.http.Header; +import org.apache.http.HttpEntity; import org.apache.http.NameValuePair; import org.apache.http.client.config.RequestConfig; import org.apache.http.client.entity.UrlEncodedFormEntity; @@ -10,19 +12,23 @@ import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpDelete; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.ContentType; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; import org.apache.http.protocol.HTTP; import org.apache.http.util.EntityUtils; +import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; +import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; import java.util.Map; diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/sign/Md5Utils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/sign/Md5Utils.java index acdfa515..f87bc815 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/sign/Md5Utils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/sign/Md5Utils.java @@ -32,6 +32,23 @@ public class Md5Utils 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) @@ -52,6 +69,19 @@ public class Md5Utils 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(String s) { try diff --git a/yanzhu-jh/src/main/java/com/yanzhu/jh/project/mapper/SurProjectAttendanceUserMapper.java b/yanzhu-jh/src/main/java/com/yanzhu/jh/project/mapper/SurProjectAttendanceUserMapper.java index 24115a87..f0f01e71 100644 --- a/yanzhu-jh/src/main/java/com/yanzhu/jh/project/mapper/SurProjectAttendanceUserMapper.java +++ b/yanzhu-jh/src/main/java/com/yanzhu/jh/project/mapper/SurProjectAttendanceUserMapper.java @@ -30,6 +30,14 @@ public interface SurProjectAttendanceUserMapper */ public SurProjectAttendanceUser findCurrentAttendanceUser(SurProjectAttendanceUser surProjectAttendanceUser); + /** + * 查询[研筑]考勤人员信息 + * + * @param surProjectAttendanceUser + * @return 考勤人员基本属性 + */ + public SurProjectAttendanceUser findYzCurrentAttendanceUser(SurProjectAttendanceUser surProjectAttendanceUser); + /** * 查询考勤人员基本属性列表 * diff --git a/yanzhu-jh/src/main/java/com/yanzhu/jh/project/service/ISurProjectAttendanceUserService.java b/yanzhu-jh/src/main/java/com/yanzhu/jh/project/service/ISurProjectAttendanceUserService.java index f70f63a8..c77dd2cb 100644 --- a/yanzhu-jh/src/main/java/com/yanzhu/jh/project/service/ISurProjectAttendanceUserService.java +++ b/yanzhu-jh/src/main/java/com/yanzhu/jh/project/service/ISurProjectAttendanceUserService.java @@ -30,6 +30,14 @@ public interface ISurProjectAttendanceUserService */ public SurProjectAttendanceUser findCurrentAttendanceUser(SurProjectAttendanceUser surProjectAttendanceUser); + /** + * 查询[研筑]考勤人员信息 + * + * @param surProjectAttendanceUser + * @return 考勤人员基本属性 + */ + public SurProjectAttendanceUser findYzCurrentAttendanceUser(SurProjectAttendanceUser surProjectAttendanceUser); + /** * 查询考勤人员基本属性列表 * diff --git a/yanzhu-jh/src/main/java/com/yanzhu/jh/project/service/impl/SurProjectAttendanceUserServiceImpl.java b/yanzhu-jh/src/main/java/com/yanzhu/jh/project/service/impl/SurProjectAttendanceUserServiceImpl.java index 6b5cf092..cd3f446c 100644 --- a/yanzhu-jh/src/main/java/com/yanzhu/jh/project/service/impl/SurProjectAttendanceUserServiceImpl.java +++ b/yanzhu-jh/src/main/java/com/yanzhu/jh/project/service/impl/SurProjectAttendanceUserServiceImpl.java @@ -49,6 +49,16 @@ public class SurProjectAttendanceUserServiceImpl implements ISurProjectAttendanc return surProjectAttendanceUserMapper.findCurrentAttendanceUser(surProjectAttendanceUser); } + /** + * 查询[研筑]考勤人员信息 + * + * @param surProjectAttendanceUser + * @return 考勤人员基本属性 + */ + public SurProjectAttendanceUser findYzCurrentAttendanceUser(SurProjectAttendanceUser surProjectAttendanceUser){ + return surProjectAttendanceUserMapper.findYzCurrentAttendanceUser(surProjectAttendanceUser); + } + /** * 查询考勤人员基本属性列表 * diff --git a/yanzhu-jh/src/main/resources/mapper/project/SurProjectAttendanceDataMapper.xml b/yanzhu-jh/src/main/resources/mapper/project/SurProjectAttendanceDataMapper.xml index b27aa775..16262c28 100644 --- a/yanzhu-jh/src/main/resources/mapper/project/SurProjectAttendanceDataMapper.xml +++ b/yanzhu-jh/src/main/resources/mapper/project/SurProjectAttendanceDataMapper.xml @@ -53,8 +53,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" and cfgid = #{cfgid} and app_id = #{appId} - and workerId = #{workerId} - and date(attendance_time) = date(#{attendanceTime}) + and workerId = #{workerId} + and date(attendance_time) = date(#{attendanceTime}) order by attendance_time desc diff --git a/yanzhu-jh/src/main/resources/mapper/project/SurProjectAttendanceUserMapper.xml b/yanzhu-jh/src/main/resources/mapper/project/SurProjectAttendanceUserMapper.xml index ea2ccbdb..042e389a 100644 --- a/yanzhu-jh/src/main/resources/mapper/project/SurProjectAttendanceUserMapper.xml +++ b/yanzhu-jh/src/main/resources/mapper/project/SurProjectAttendanceUserMapper.xml @@ -158,6 +158,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where u.cfgid=#{cfgid} and u.workerId=#{workerId} + + insert into sur_project_attendance_user