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 77d09a67..49beb50f 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 @@ -21,6 +21,7 @@ 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.http.HttpClientUtil; import com.ruoyi.common.utils.sign.Md5Utils; import com.ruoyi.framework.web.service.SysLoginService; @@ -29,6 +30,9 @@ import com.ruoyi.system.service.ISysUserService; import com.yanzhu.jh.project.domain.SurProjectAttendanceData; import com.yanzhu.jh.project.domain.SurProjectAttendanceGroup; import com.yanzhu.jh.project.domain.SurProjectAttendanceUser; +import com.yanzhu.jh.project.domain.vo.LabourDataVo; +import com.yanzhu.jh.project.domain.vo.LabourGroupVO; +import com.yanzhu.jh.project.domain.vo.LabourUserVO; import com.yanzhu.jh.project.service.ISurProjectAttendanceDataService; import com.yanzhu.jh.project.service.ISurProjectAttendanceGroupService; import com.yanzhu.jh.project.service.ISurProjectAttendanceUserService; @@ -42,6 +46,9 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import javax.validation.ConstraintViolation; +import javax.validation.Valid; +import javax.validation.Validation; import java.util.*; /** @@ -149,7 +156,13 @@ public class LabourApiController extends BaseController { if(req.getDataSign(sysApplyConfig.getPrivateKey())){ try { SurProjectAttendanceGroup surProjectAttendanceGroup = JSONObject.parseObject(req.getData(), SurProjectAttendanceGroup.class); - if(StringUtils.isNotEmpty(surProjectAttendanceGroup.getServerid()) && surProjectAttendanceGroup.getCompanyId()!=null && StringUtils.isNotEmpty(surProjectAttendanceGroup.getCompanyTypeId()) && StringUtils.isNotEmpty(surProjectAttendanceGroup.getCompanyName()) && StringUtils.isNotEmpty(surProjectAttendanceGroup.getName())){ + LabourGroupVO labourGroupVO = new LabourGroupVO(); + BeanUtils.copyBeanProp(labourGroupVO,surProjectAttendanceGroup); + // 手动检测转换后的实体 + Set> validateSet = Validation.buildDefaultValidatorFactory() + .getValidator() + .validate(labourGroupVO, new Class[0]); + if(CollectionUtils.isEmpty(validateSet)){ // 查询当前班组是否已推送 SurProjectAttendanceGroup searchModel = new SurProjectAttendanceGroup(); searchModel.setAppId(sysApplyConfig.getAppId()); @@ -171,11 +184,14 @@ public class LabourApiController extends BaseController { surProjectAttendanceGroupService.insertSurProjectAttendanceGroup(surProjectAttendanceGroup); } }else{ - throw new ServiceException(HttpStatusEnum.DARA_EXCEPTION.getInfo(),HttpStatusEnum.DARA_EXCEPTION.getCode()); + String messages = validateSet.stream() + .map(ConstraintViolation::getMessage) + .reduce((m1, m2) -> m1 + ";" + m2) + .orElse("参数输入有误!"); + throw new Exception(messages); } }catch (Exception e){ - log.error(e.getMessage()); - throw new ServiceException(HttpStatusEnum.SINGET_EXCEPTION.getInfo(),HttpStatusEnum.SINGET_EXCEPTION.getCode()); + throw new ServiceException(e.getMessage(),HttpStatusEnum.DARA_EXCEPTION.getCode()); } }else{ throw new ServiceException(HttpStatusEnum.SINGET_TIMEOUT.getInfo(),HttpStatusEnum.SINGET_TIMEOUT.getCode()); @@ -194,8 +210,6 @@ public class LabourApiController extends BaseController { @RateLimiter(time = 30, count = 10, limitType = LimitType.IP) @PostMapping("/v1/pushLabourGroupList") public AjaxResult pushLabourGroupList(@Validated @RequestBody LabourSignetVo req) { - // 失败集合 - List failServiceIdList = new ArrayList<>(); 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()); @@ -206,36 +220,43 @@ public class LabourApiController extends BaseController { List saveList = new ArrayList<>(); List surProjectAttendanceGroupList = JSON.parseArray(req.getData(),SurProjectAttendanceGroup.class); if(CollectionUtils.isNotEmpty(surProjectAttendanceGroupList)){ - // 批量删除已保存数据 - List params = new ArrayList<>(); - for(SurProjectAttendanceGroup surProjectAttendanceGroup:surProjectAttendanceGroupList){ - params.add(sysApplyConfig.getAppId()+"-"+surProjectAttendanceGroup.getServerid()); - } - surProjectAttendanceGroupService.deleteSurProjectAttendanceGroupByParams(params); for(int i=0;i> validateSet = Validation.buildDefaultValidatorFactory() + .getValidator() + .validate(labourGroupVO, new Class[0]); + if(CollectionUtils.isEmpty(validateSet)){ surProjectAttendanceGroup.setAppId(sysApplyConfig.getAppId()); surProjectAttendanceGroup.setCfgid(sysApplyConfig.getCfgId()); surProjectAttendanceGroup.setCreateBy(sysApplyConfig.getAppId()); surProjectAttendanceGroup.setCreateTime(new Date()); saveList.add(surProjectAttendanceGroup); }else{ - failServiceIdList.add(i); + String messages = validateSet.stream() + .map(ConstraintViolation::getMessage) + .reduce((m1, m2) -> m1 + ";" + m2) + .orElse("参数输入有误!"); + throw new Exception("["+i+"]"+messages); } } + // 批量删除已保存数据 + List params = new ArrayList<>(); + for(SurProjectAttendanceGroup surProjectAttendanceGroup:surProjectAttendanceGroupList){ + params.add(sysApplyConfig.getAppId()+"-"+surProjectAttendanceGroup.getServerid()); + } + surProjectAttendanceGroupService.deleteSurProjectAttendanceGroupByParams(params); surProjectAttendanceGroupService.batchSurProjectAttendanceGroup(saveList); - }else{ - throw new ServiceException(HttpStatusEnum.DARA_EXCEPTION.getInfo(),HttpStatusEnum.DARA_EXCEPTION.getCode()); } }catch (Exception e){ - log.error(e.getMessage()); - throw new ServiceException(HttpStatusEnum.SINGET_EXCEPTION.getInfo(),HttpStatusEnum.SINGET_EXCEPTION.getCode()); + throw new ServiceException(e.getMessage(),HttpStatusEnum.DARA_EXCEPTION.getCode()); } }else{ throw new ServiceException(HttpStatusEnum.SINGET_TIMEOUT.getInfo(),HttpStatusEnum.SINGET_TIMEOUT.getCode()); } - return success(failServiceIdList); + return success(); } /** @@ -256,8 +277,13 @@ public class LabourApiController extends BaseController { if(req.getDataSign(sysApplyConfig.getPrivateKey())){ try { SurProjectAttendanceUser surProjectAttendanceUser = JSONObject.parseObject(req.getData(), SurProjectAttendanceUser.class); - if(StringUtils.isNotEmpty(surProjectAttendanceUser.getWorkerId()) && StringUtils.isNotEmpty(surProjectAttendanceUser.getName()) && StringUtils.isNotEmpty(surProjectAttendanceUser.getPhone()) && surProjectAttendanceUser.getGroupId()!=null && surProjectAttendanceUser.getCompanyId()!=null - && StringUtils.isNotEmpty(surProjectAttendanceUser.getGroupName()) && StringUtils.isNotEmpty(surProjectAttendanceUser.getWorkTypeName()) && surProjectAttendanceUser.getGender()!=null && StringUtils.isNotEmpty(surProjectAttendanceUser.getRecentPhoto()) && StringUtils.isNotEmpty(surProjectAttendanceUser.getNativePlace()) && StringUtils.isNotEmpty(surProjectAttendanceUser.getEnterDate()) && surProjectAttendanceUser.getState()!=null){ + LabourUserVO labourUserVO = new LabourUserVO(); + BeanUtils.copyBeanProp(labourUserVO,surProjectAttendanceUser); + // 手动检测转换后的实体 + Set> validateSet = Validation.buildDefaultValidatorFactory() + .getValidator() + .validate(labourUserVO, new Class[0]); + if(CollectionUtils.isEmpty(validateSet)){ // 查询当前人员是否已推送 SurProjectAttendanceUser searchModel = new SurProjectAttendanceUser(); searchModel.setAppId(sysApplyConfig.getAppId()); @@ -279,11 +305,14 @@ public class LabourApiController extends BaseController { surProjectAttendanceUserService.insertSurProjectAttendanceUser(surProjectAttendanceUser); } }else{ - throw new ServiceException(HttpStatusEnum.DARA_EXCEPTION.getInfo(),HttpStatusEnum.DARA_EXCEPTION.getCode()); + String messages = validateSet.stream() + .map(ConstraintViolation::getMessage) + .reduce((m1, m2) -> m1 + ";" + m2) + .orElse("参数输入有误!"); + throw new Exception(messages); } }catch (Exception e){ - log.error(e.getMessage()); - throw new ServiceException(HttpStatusEnum.SINGET_EXCEPTION.getInfo(),HttpStatusEnum.SINGET_EXCEPTION.getCode()); + throw new ServiceException(e.getMessage(),HttpStatusEnum.DARA_EXCEPTION.getCode()); } }else{ throw new ServiceException(HttpStatusEnum.SINGET_TIMEOUT.getInfo(),HttpStatusEnum.SINGET_TIMEOUT.getCode()); @@ -302,8 +331,6 @@ public class LabourApiController extends BaseController { @RateLimiter(time = 30, count = 10, limitType = LimitType.IP) @PostMapping("/v1/pushLabourUserList") public AjaxResult pushLabourUserList(@Validated @RequestBody LabourSignetVo req) { - // 失败集合 - List failServiceIdList = new ArrayList<>(); 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()); @@ -314,36 +341,43 @@ public class LabourApiController extends BaseController { List saveList = new ArrayList<>(); List surProjectAttendanceUserList = JSON.parseArray(req.getData(),SurProjectAttendanceUser.class); if(CollectionUtils.isNotEmpty(surProjectAttendanceUserList)){ - // 批量删除已保存数据 - List params = new ArrayList<>(); - for(SurProjectAttendanceUser surProjectAttendanceUser:surProjectAttendanceUserList){ - params.add(sysApplyConfig.getAppId()+"-"+surProjectAttendanceUser.getWorkerId()); - } - surProjectAttendanceUserService.deleteSurProjectAttendanceUserByParams(params); for(int i=0;i> validateSet = Validation.buildDefaultValidatorFactory() + .getValidator() + .validate(labourUserVO, new Class[0]); + if(CollectionUtils.isEmpty(validateSet)){ surProjectAttendanceUser.setCfgid(sysApplyConfig.getCfgId()); surProjectAttendanceUser.setCreateBy(sysApplyConfig.getAppId()); surProjectAttendanceUser.setCreateTime(new Date()); saveList.add(surProjectAttendanceUser); }else{ - failServiceIdList.add(i); + String messages = validateSet.stream() + .map(ConstraintViolation::getMessage) + .reduce((m1, m2) -> m1 + ";" + m2) + .orElse("参数输入有误!"); + throw new Exception("["+i+"]"+messages); } } + // 批量删除已保存数据 + List params = new ArrayList<>(); + for(SurProjectAttendanceUser surProjectAttendanceUser:surProjectAttendanceUserList){ + params.add(sysApplyConfig.getAppId()+"-"+surProjectAttendanceUser.getWorkerId()); + } + //删除后新增 + surProjectAttendanceUserService.deleteSurProjectAttendanceUserByParams(params); surProjectAttendanceUserService.batchSurProjectAttendanceUser(saveList); - }else{ - throw new ServiceException(HttpStatusEnum.DARA_EXCEPTION.getInfo(),HttpStatusEnum.DARA_EXCEPTION.getCode()); } }catch (Exception e){ - log.error(e.getMessage()); - throw new ServiceException(HttpStatusEnum.SINGET_EXCEPTION.getInfo(),HttpStatusEnum.SINGET_EXCEPTION.getCode()); + throw new ServiceException(e.getMessage(),HttpStatusEnum.DARA_EXCEPTION.getCode()); } }else{ throw new ServiceException(HttpStatusEnum.SINGET_TIMEOUT.getInfo(),HttpStatusEnum.SINGET_TIMEOUT.getCode()); } - return success(failServiceIdList); + return success(); } /** @@ -364,7 +398,13 @@ public class LabourApiController extends BaseController { if(req.getDataSign(sysApplyConfig.getPrivateKey())){ try { SurProjectAttendanceData surProjectAttendanceData = JSONObject.parseObject(req.getData(), SurProjectAttendanceData.class); - if(StringUtils.isNotEmpty(surProjectAttendanceData.getWorkerId()) && StringUtils.isNotEmpty(surProjectAttendanceData.getServerid()) && StringUtils.isNotEmpty(surProjectAttendanceData.getAttendanceType()) && surProjectAttendanceData.getAttendanceTime()!=null){ + LabourDataVo labourDataVo = new LabourDataVo(); + BeanUtils.copyBeanProp(labourDataVo,surProjectAttendanceData); + // 手动检测转换后的实体 + Set> validateSet = Validation.buildDefaultValidatorFactory() + .getValidator() + .validate(labourDataVo, new Class[0]); + if(CollectionUtils.isEmpty(validateSet)){ // 查询当前班组人员考勤是否已推送 SurProjectAttendanceData searchModel = new SurProjectAttendanceData(); searchModel.setAppId(sysApplyConfig.getAppId()); @@ -387,11 +427,15 @@ public class LabourApiController extends BaseController { surProjectAttendanceDataService.insertSurProjectAttendanceData(surProjectAttendanceData); } }else{ - throw new ServiceException(HttpStatusEnum.DARA_EXCEPTION.getInfo(),HttpStatusEnum.DARA_EXCEPTION.getCode()); + String messages = validateSet.stream() + .map(ConstraintViolation::getMessage) + .reduce((m1, m2) -> m1 + ";" + m2) + .orElse("参数输入有误!"); + throw new Exception(messages); } }catch (Exception e){ log.error(e.getMessage()); - throw new ServiceException(HttpStatusEnum.SINGET_EXCEPTION.getInfo(),HttpStatusEnum.SINGET_EXCEPTION.getCode()); + throw new ServiceException(e.getMessage(),HttpStatusEnum.DARA_EXCEPTION.getCode()); } }else{ throw new ServiceException(HttpStatusEnum.SINGET_TIMEOUT.getInfo(),HttpStatusEnum.SINGET_TIMEOUT.getCode()); @@ -410,8 +454,6 @@ public class LabourApiController extends BaseController { @RateLimiter(time = 30, count = 10, limitType = LimitType.IP) @PostMapping("/v1/pushLabourDataList") public AjaxResult pushLabourDataList(@Validated @RequestBody LabourSignetVo req) { - // 失败集合 - List failServiceIdList = new ArrayList<>(); 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()); @@ -422,41 +464,48 @@ public class LabourApiController extends BaseController { List saveList = new ArrayList<>(); List surProjectAttendanceDataList = JSON.parseArray(req.getData(),SurProjectAttendanceData.class); if(CollectionUtils.isNotEmpty(surProjectAttendanceDataList)){ - // 批量删除已保存数据 - List params = new ArrayList<>(); - for(SurProjectAttendanceData surProjectAttendanceData:surProjectAttendanceDataList){ - params.add(sysApplyConfig.getAppId()+"-"+surProjectAttendanceData.getServerid()+"-"+surProjectAttendanceData.getWorkerId()); - } - surProjectAttendanceDataService.deleteSurProjectAttendanceDataByParams(params); for(int i=0;i> validateSet = Validation.buildDefaultValidatorFactory() + .getValidator() + .validate(labourDataVo, new Class[0]); + if(CollectionUtils.isEmpty(validateSet)){ surProjectAttendanceData.setAppId(sysApplyConfig.getAppId()); surProjectAttendanceData.setCfgid(sysApplyConfig.getCfgId()); surProjectAttendanceData.setCreateBy(sysApplyConfig.getAppId()); surProjectAttendanceData.setCreateTime(new Date()); saveList.add(surProjectAttendanceData); }else{ - failServiceIdList.add(i); + String messages = validateSet.stream() + .map(ConstraintViolation::getMessage) + .reduce((m1, m2) -> m1 + ";" + m2) + .orElse("参数输入有误!"); + throw new Exception("["+i+"]"+messages); } } + // 批量删除已保存数据 + List params = new ArrayList<>(); + for(SurProjectAttendanceData surProjectAttendanceData:surProjectAttendanceDataList){ + params.add(sysApplyConfig.getAppId()+"-"+surProjectAttendanceData.getServerid()+"-"+surProjectAttendanceData.getWorkerId()); + } + surProjectAttendanceDataService.deleteSurProjectAttendanceDataByParams(params); surProjectAttendanceDataService.batchSurProjectAttendanceData(saveList); - }else{ - throw new ServiceException(HttpStatusEnum.DARA_EXCEPTION.getInfo(),HttpStatusEnum.DARA_EXCEPTION.getCode()); } }catch (Exception e){ - log.error(e.getMessage()); - throw new ServiceException(HttpStatusEnum.SINGET_EXCEPTION.getInfo(),HttpStatusEnum.SINGET_EXCEPTION.getCode()); + throw new ServiceException(e.getMessage(),HttpStatusEnum.DARA_EXCEPTION.getCode()); } }else{ throw new ServiceException(HttpStatusEnum.SINGET_TIMEOUT.getInfo(),HttpStatusEnum.SINGET_TIMEOUT.getCode()); } - return success(failServiceIdList); + return success(); } private static final String publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMIBL0C+sN2oZEaCscc8gaEjXv87F/Ggml4XcjFmWaw8xQ0vfwGzY6wdG6eTMLW0FV3GSSxs2lsVJnrjkHNAnqFoMGn3RHcHnrIlAm4+ALt8S4rQ1TIgqzuasuVykUkGunTDYzAEcObTkZ70ZToj8qQwRCkskfgbUIiw4XpXqS2QIDAQAB"; - private static final String baseUrl = "http://62.234.3.186:8090/jhapi"; - private static final String token = "eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6Ijk1OWIwODAzLTU3NjEtNDBlOS1iYWUxLWJhNzQ0NjkyNmNkMCJ9.BKEaL5vGknNX6aVwYqG1xlJqv9haByoCD4Qo5alXXPWY3PkQsyKuLCN-Iw2ZHM3B4MX9XahrS2sT9Y3RjmuWXA"; + private static final String baseUrl = "http://127.0.0.1:8090/jhapi"; + private static final String token = "eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjMyZTJlYmY2LTE1NjktNDk1OS1iZDY4LTM1NWZhZGQxNjNiMyJ9.TM1mm-Nxr3g5HkUNt5gaDdN_nHKcQ8OiZYX6K1M5K8odLounSBxXzFlBzy3BndyhzkUmPbSIAO8yMD9up-FTYQ"; /** * 推送,修改班组信息【示例代码】 @@ -494,6 +543,11 @@ public class LabourApiController extends BaseController { public static void pushLabourGroup(){ Map map = new HashMap<>(); map.put("serverid","1"); + map.put("companyId",123); + map.put("companyName","1222222222222222222222222"); + map.put("companyTypeId","1"); + map.put("name","12"); + map.put("isDel",1); String jsonString = JSONObject.toJSONString(map); String timestamp = String.valueOf(System.currentTimeMillis()); try { @@ -522,13 +576,29 @@ public class LabourApiController extends BaseController { * 批量推送班组信息【示例代码】 */ public static void pushLabourGroupList(List> datas){ + Map map = new HashMap<>(); + map.put("serverid","1"); + map.put("companyId",123); + map.put("companyName","1222222222222222222222222"); + map.put("companyTypeId","1"); + map.put("name","12"); + map.put("isDel",1); + datas.add(map); + Map map1 = new HashMap<>(); + map1.put("serverid","1"); + map1.put("companyId",123); + map1.put("companyName","1222222222222222222222222"); + map1.put("companyTypeId","1"); + map1.put("name","12"); + map1.put("isDel",1); + datas.add(map1); String jsonString = JSONObject.toJSONString(datas); String timestamp = String.valueOf(System.currentTimeMillis()); try { // 明文信息->公钥加密 String encryptByPublicKeyStr = AuthRsaUtils.encryptByPublicKey(publicKey, Md5Utils.hash(jsonString)+timestamp); log.info("公钥加密...{}" , encryptByPublicKeyStr); - String url = baseUrl + "/api/labour/v1/pushLabourGroup"; + String url = baseUrl + "/api/labour/v1/pushLabourGroupList"; Map body = new HashMap<>(); body.put("sign",encryptByPublicKeyStr); body.put("data",jsonString); @@ -554,11 +624,27 @@ public class LabourApiController extends BaseController { Map map = new HashMap<>(); map.put("workerId","1"); map.put("name","张三"); + map.put("phone","张三"); + map.put("groupId",1); + map.put("companyId",1); + map.put("groupName","张三112"); + map.put("workTypeName","张三112"); + map.put("specWorkType",1); + map.put("typeName",1); + map.put("ethnic","1213"); + map.put("gender",1); + map.put("recentPhoto","http:///api/labour/v1/pushLabourUser/123"); + map.put("nativePlace","张三111"); + map.put("enterDate",1); + map.put("state",1); + map.put("isDel",1); String jsonString = JSONObject.toJSONString(map); String timestamp = String.valueOf(System.currentTimeMillis()); try { + String s = Md5Utils.hash(jsonString)+timestamp; + log.info("签名明文...{}" , s); // 明文信息->公钥加密 - String encryptByPublicKeyStr = AuthRsaUtils.encryptByPublicKey(publicKey, Md5Utils.hash(jsonString)+timestamp); + String encryptByPublicKeyStr = AuthRsaUtils.encryptByPublicKey(publicKey, s); log.info("公钥加密...{}" , encryptByPublicKeyStr); String url = baseUrl + "/api/labour/v1/pushLabourUser"; Map body = new HashMap<>(); @@ -582,6 +668,42 @@ public class LabourApiController extends BaseController { * 批量推送人员信息【示例代码】 */ public static void pushLabourUserList(List> datas){ + Map map = new HashMap<>(); + map.put("workerId","1"); + map.put("name","张三"); + map.put("phone","张三"); + map.put("groupId",1); + map.put("companyId",1); + map.put("groupName","张三112"); + map.put("workTypeName","张三112"); + map.put("specWorkType",1); + map.put("typeName",1); + map.put("ethnic","1213"); + map.put("gender",1); + map.put("recentPhoto","http:///api/labour/v1/pushLabourUser/123"); + map.put("nativePlace","张三111"); + map.put("enterDate",1); + map.put("state",1); + map.put("isDel",1); + datas.add(map); + Map map1 = new HashMap<>(); + map1.put("workerId","1"); + map1.put("name","张三"); + map1.put("phone","张三"); + map1.put("groupId",1); + map1.put("companyId",1); + map1.put("groupName","张三112"); + map1.put("workTypeName","张三112"); + map1.put("specWorkType",1); + map1.put("typeName",1); + map1.put("ethnic","1213"); + map1.put("gender",1); + map1.put("recentPhoto","http:///api/labour/v1/pushLabourUser/123"); + map1.put("nativePlace","张三111"); + map1.put("enterDate",1); + map1.put("state",1); + map1.put("isDel",1); + datas.add(map1); String jsonString = JSONObject.toJSONString(datas); String timestamp = String.valueOf(System.currentTimeMillis()); try { @@ -614,6 +736,11 @@ public class LabourApiController extends BaseController { Map map = new HashMap<>(); map.put("serverid","1"); map.put("workerId","1"); + map.put("companyId",1); + map.put("attendanceType","E"); + map.put("attendanceTime","2022-11-22 11:11:11"); + map.put("identification","11231231232132"); + map.put("isDel",1); String jsonString = JSONObject.toJSONString(map); String timestamp = String.valueOf(System.currentTimeMillis()); try { @@ -642,11 +769,31 @@ public class LabourApiController extends BaseController { * 批量推送班组人员出勤信息【示例代码】 */ public static void pushLabourDataList(List> datas){ + Map map = new HashMap<>(); + map.put("serverid","1"); + map.put("workerId","1"); + map.put("companyId",1); + map.put("attendanceType","E"); + map.put("attendanceTime","2022-11-22 11:11:11"); + map.put("identification","11231231232132"); + map.put("isDel",1); + datas.add(map); + Map map1 = new HashMap<>(); + map1.put("serverid","1"); + map1.put("workerId","1"); + map1.put("companyId",1); + map1.put("attendanceType","E"); + map1.put("attendanceTime","2022-11-22 11:11:11"); + map1.put("identification","11231231232132"); + map1.put("isDel",1); + datas.add(map1); String jsonString = JSONObject.toJSONString(datas); String timestamp = String.valueOf(System.currentTimeMillis()); try { // 明文信息->公钥加密 - String encryptByPublicKeyStr = AuthRsaUtils.encryptByPublicKey(publicKey, Md5Utils.hash(jsonString)+timestamp); + String s = Md5Utils.hash(jsonString)+timestamp; + log.info("签名明文...{}" , s); + String encryptByPublicKeyStr = AuthRsaUtils.encryptByPublicKey(publicKey, s); log.info("公钥加密...{}" , encryptByPublicKeyStr); String url = baseUrl + "/api/labour/v1/pushLabourDataList"; Map body = new HashMap<>(); @@ -668,7 +815,7 @@ public class LabourApiController extends BaseController { } public static void main(String[] args) { - getToken(); + 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 29ddf64b..58423c40 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 @@ -56,6 +56,7 @@ public class LabourSignetVo { String decryptByPrivateKey = AuthRsaUtils.decryptByPrivateKey(privateKey,sign); String privateDataStr = Md5Utils.hash(data) + timestamp; log.info("签名值...{}",privateDataStr); + log.info("解密值...{}",decryptByPrivateKey); if (StringUtils.equals(privateDataStr, decryptByPrivateKey)) { signFlag = true; } diff --git a/ruoyi-admin/src/main/resources/application-test.yml b/ruoyi-admin/src/main/resources/application-test.yml index 6278adc9..ef42a5c0 100644 --- a/ruoyi-admin/src/main/resources/application-test.yml +++ b/ruoyi-admin/src/main/resources/application-test.yml @@ -102,7 +102,7 @@ spring: # 数据库索引 database: 1 # 密码 - password: 123456 + password: sadklfasjfdlui_290sad^&F@&#&&*@^&*$ # 连接超时时间 timeout: 10s lettuce: diff --git a/ruoyi-ui/src/views/project/projectChecking/index.vue b/ruoyi-ui/src/views/project/projectChecking/index.vue index 540115b2..3686c384 100644 --- a/ruoyi-ui/src/views/project/projectChecking/index.vue +++ b/ruoyi-ui/src/views/project/projectChecking/index.vue @@ -647,7 +647,8 @@ export default { }, methods: { setDataTypeLvl1(row, val){ - updateProjectChecking({id:row.id,dataTypeLvl1:val}); + row.dataTypeLvl2=null; + updateProjectChecking({id:row.id,dataTypeLvl1:val,dataTypeLvl2:null}); }, setDataTypeLvl2(row, val){ updateProjectChecking({id:row.id,dataTypeLvl2:val}); diff --git a/ruoyi-ui/src/views/project/projectChecking/projectCheckingDrawer.vue b/ruoyi-ui/src/views/project/projectChecking/projectCheckingDrawer.vue index 70e91c60..fc1a75db 100644 --- a/ruoyi-ui/src/views/project/projectChecking/projectCheckingDrawer.vue +++ b/ruoyi-ui/src/views/project/projectChecking/projectCheckingDrawer.vue @@ -280,7 +280,7 @@ > { this.$modal.msgSuccess("添加成功"); diff --git a/ruoyi-ui/src/views/work/workTrain/workTrainDrawer.vue b/ruoyi-ui/src/views/work/workTrain/workTrainDrawer.vue index 22de7b4f..84effd4e 100644 --- a/ruoyi-ui/src/views/work/workTrain/workTrainDrawer.vue +++ b/ruoyi-ui/src/views/work/workTrain/workTrainDrawer.vue @@ -457,6 +457,7 @@ export default { }); } else { this.form.trainType = 0; + this.form.deptId = this.activeName; this.form.isDel = 0; addWorkTrain(this.form).then((response) => { this.$modal.msgSuccess("添加成功"); diff --git a/yanzhu-jh/src/main/java/com/yanzhu/jh/project/domain/SurProjectAttendanceData.java b/yanzhu-jh/src/main/java/com/yanzhu/jh/project/domain/SurProjectAttendanceData.java index 41635497..1fc5caaf 100644 --- a/yanzhu-jh/src/main/java/com/yanzhu/jh/project/domain/SurProjectAttendanceData.java +++ b/yanzhu-jh/src/main/java/com/yanzhu/jh/project/domain/SurProjectAttendanceData.java @@ -89,11 +89,11 @@ public class SurProjectAttendanceData extends BaseEntity private String other; /** */ - @Excel(name = "") + @Excel(name = "数据状态") private Long state; /** */ - @Excel(name = "") + @Excel(name = "数据是否有效") private Long isDel; private Long projectId; diff --git a/yanzhu-jh/src/main/java/com/yanzhu/jh/project/domain/SurProjectAttendanceGroup.java b/yanzhu-jh/src/main/java/com/yanzhu/jh/project/domain/SurProjectAttendanceGroup.java index e1cf25f5..9ab5b770 100644 --- a/yanzhu-jh/src/main/java/com/yanzhu/jh/project/domain/SurProjectAttendanceGroup.java +++ b/yanzhu-jh/src/main/java/com/yanzhu/jh/project/domain/SurProjectAttendanceGroup.java @@ -16,11 +16,11 @@ public class SurProjectAttendanceGroup extends BaseEntity { private static final long serialVersionUID = 1L; - /** $column.columnComment */ + /** id */ private Long id; - /** $column.columnComment */ - @Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()") + /** cfgid */ + @Excel(name = "cfgid") private Long cfgid; /** 注册应用ID */ @@ -104,7 +104,7 @@ public class SurProjectAttendanceGroup extends BaseEntity private Long exitDate; /** 是否有效 */ - @Excel(name = "是否有效", readConverterExp = "$column.readConverterExp()") + @Excel(name = "是否有效") private Long isDel; /** 时间戳 */ diff --git a/yanzhu-jh/src/main/java/com/yanzhu/jh/project/domain/vo/LabourDataVo.java b/yanzhu-jh/src/main/java/com/yanzhu/jh/project/domain/vo/LabourDataVo.java new file mode 100644 index 00000000..bd1d6e0e --- /dev/null +++ b/yanzhu-jh/src/main/java/com/yanzhu/jh/project/domain/vo/LabourDataVo.java @@ -0,0 +1,106 @@ +package com.yanzhu.jh.project.domain.vo; + +import com.ruoyi.common.core.domain.BaseEntity; + +import javax.validation.constraints.*; + +/** + * 劳务实名制管理对象 + * + * @author JiangYuQi + * @date 2024-01-22 + */ +public class LabourDataVo extends BaseEntity +{ + private static final long serialVersionUID = 1L; + + /** 数据id */ + @NotBlank(message = "考勤数据ID不能为空") + @Size(max = 64, message = "考勤数据ID最大长度64位") + private String serverid; + + /** 工人Id */ + @NotBlank(message = "工人ID不能为空") + @Size(max = 64, message = "工人ID最大长度64位") + private String workerId; + + /** 分包商id */ + @NotNull(message = "分包商ID不能为空") + private Long companyId; + + /** 进门还是出门E进,L出 */ + @NotBlank(message = "进出门不能为空") + @Pattern(regexp = "E|L", message = "进出门类型格式异常,E进|L出") + private String attendanceType; + + /** 考勤时间yyyy-MM-dd HH:mm:ss */ + @NotBlank(message = "考勤时间不能为空") + @Size(min = 18,max = 20, message = "考勤时间格式异常YYYY-MM-dd HH:mm:ss") + private String attendanceTime; + + /** 身份证号 */ + @NotBlank(message = "身份证号不能为空") + @Size(max = 32, message = "身份证号最大长度为32位") + private String identification; + + /** 数据是否有效 */ + @NotNull(message = "数据是否有效不能为空") + @Max(value = 1, message = "数据是否有效格式异常,0有效|1无效") + private Long isDel; + + public String getServerid() { + return serverid; + } + + public void setServerid(String serverid) { + this.serverid = serverid; + } + + public String getWorkerId() { + return workerId; + } + + public void setWorkerId(String workerId) { + this.workerId = workerId; + } + + public Long getCompanyId() { + return companyId; + } + + public void setCompanyId(Long companyId) { + this.companyId = companyId; + } + + public String getAttendanceType() { + return attendanceType; + } + + public void setAttendanceType(String attendanceType) { + this.attendanceType = attendanceType; + } + + public String getAttendanceTime() { + return attendanceTime; + } + + public void setAttendanceTime(String attendanceTime) { + this.attendanceTime = attendanceTime; + } + + public String getIdentification() { + return identification; + } + + public void setIdentification(String identification) { + this.identification = identification; + } + + public Long getIsDel() { + return isDel; + } + + public void setIsDel(Long isDel) { + this.isDel = isDel; + } +} diff --git a/yanzhu-jh/src/main/java/com/yanzhu/jh/project/domain/vo/LabourGroupVO.java b/yanzhu-jh/src/main/java/com/yanzhu/jh/project/domain/vo/LabourGroupVO.java new file mode 100644 index 00000000..bb811ff7 --- /dev/null +++ b/yanzhu-jh/src/main/java/com/yanzhu/jh/project/domain/vo/LabourGroupVO.java @@ -0,0 +1,85 @@ +package com.yanzhu.jh.project.domain.vo; + +import javax.validation.constraints.*; + +public class LabourGroupVO { + + private static final long serialVersionUID = 1L; + + /** 工人id */ + @NotBlank(message = "班组主键ID不能为空") + @Size(max = 64, message = "班组主键最大64位") + private String serverid; + + /** 分包商id */ + @NotNull(message = "分包商ID不能为空") + private Long companyId; + + /** 分包商名称 */ + @NotBlank(message = "分包商名称不能为空") + @Size(max = 64, message = "分包商名称最大64位") + private String companyName; + + /** 分包商类型不能为空 */ + @NotBlank(message = "分包商类型不能为空") + @Pattern(regexp = "1|2|3|4|5|6|7|8", message = "分包商类型错误,1总包|2劳务分包|8监理") + private String companyTypeId; + + /** 班组名称 */ + @NotBlank(message = "班组名称不能为空") + @Size(max = 64, message = "班组名称最大64位") + private String name; + + /** 数据是否有效 */ + @NotNull(message = "数据是否有效不能为空") + @Max(value = 1, message = "数据是否有效格式异常,0有效|1无效") + private Long isDel; + + public String getServerid() { + return serverid; + } + + public void setServerid(String serverid) { + this.serverid = serverid; + } + + public Long getCompanyId() { + return companyId; + } + + public void setCompanyId(Long companyId) { + this.companyId = companyId; + } + + public String getCompanyName() { + return companyName; + } + + public void setCompanyName(String companyName) { + this.companyName = companyName; + } + + public String getCompanyTypeId() { + return companyTypeId; + } + + public void setCompanyTypeId(String companyTypeId) { + this.companyTypeId = companyTypeId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Long getIsDel() { + return isDel; + } + + public void setIsDel(Long isDel) { + this.isDel = isDel; + } +} diff --git a/yanzhu-jh/src/main/java/com/yanzhu/jh/project/domain/vo/LabourUserVO.java b/yanzhu-jh/src/main/java/com/yanzhu/jh/project/domain/vo/LabourUserVO.java new file mode 100644 index 00000000..7580dc03 --- /dev/null +++ b/yanzhu-jh/src/main/java/com/yanzhu/jh/project/domain/vo/LabourUserVO.java @@ -0,0 +1,216 @@ +package com.yanzhu.jh.project.domain.vo; + +import javax.validation.constraints.Max; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Size; + +public class LabourUserVO { + + private static final long serialVersionUID = 1L; + + /** 工人id */ + @NotBlank(message = "工人ID不能为空") + @Size(max = 64, message = "工人ID最大长度64位") + private String workerId; + + /** 姓名 */ + @NotBlank(message = "工人姓名不能为空") + @Size(max = 32, message = "工人ID最大长度32位") + private String name; + + /** 民族 */ + @NotBlank(message = "工人民族不能为空") + @Size(max = 32, message = "工人民族最大长度32位") + private String ethnic; + + /** 籍贯 */ + @NotBlank(message = "工人籍贯不能为空") + @Size(max = 128, message = "工人籍贯最大长度128位") + private String nativePlace; + + /** 性别0:男 1:女 */ + @NotNull(message = "工人性别不能为空") + @Max(value = 1, message = "工人性别格式异常") + private Long gender; + + /** 联系电话 */ + @NotBlank(message = "联系电话不能为空") + @Size(max = 32, message = "联系电话最大32位") + private String phone; + + /** 近照 */ + @NotBlank(message = "工人近照不能为空") + @Size(max = 255, message = "工人近照URL最大255位") + private String recentPhoto; + + /** 所属班组ID */ + @NotNull(message = "所属班组ID不能为空") + private Long groupId; + + /** 所属班组 */ + @NotBlank(message = "所属班组不能为空") + @Size(max = 64, message = "所属名称最大64位") + private String groupName; + + /** 工种名称 */ + @NotBlank(message = "工种名称不能为空") + @Size(max = 64, message = "工种名称最大64位") + private String workTypeName; + + /** 是否特殊工种 */ + @NotNull(message = "是否特殊工种不能为空") + @Max(value = 1, message = "是否特殊工种格式异常,0否|1是") + private Integer specWorkType; + + /** 进退场状态0:进场,1:退场 */ + @NotNull(message = "进退场状态不能为空") + @Max(value = 1, message = "进退场状态格式异常,0进场|1退场") + private Long state; + + /** 进场日期 */ + @NotBlank(message = "进场日期不能为空") + @Size(max = 32, message = "进场日期格式异常") + private String enterDate; + + /** 分包商id */ + @NotNull(message = "分包商ID不能为空") + private Long companyId; + + /** 分包商名称 */ + @Size(max = 64, message = "分包商名称最大64位") + private String companyName; + + /** 数据是否有效 */ + @NotNull(message = "数据是否有效不能为空") + @Max(value = 1, message = "数据是否有效格式异常,0有效|1无效") + private Long isDel; + + public String getWorkerId() { + return workerId; + } + + public void setWorkerId(String workerId) { + this.workerId = workerId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + 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 Long getGender() { + return gender; + } + + public void setGender(Long gender) { + this.gender = gender; + } + + public String getPhone() { + return phone; + } + + public void setPhone(String phone) { + this.phone = phone; + } + + public String getRecentPhoto() { + return recentPhoto; + } + + public void setRecentPhoto(String recentPhoto) { + this.recentPhoto = recentPhoto; + } + + public Long getGroupId() { + return groupId; + } + + public void setGroupId(Long groupId) { + this.groupId = groupId; + } + + 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 Integer getSpecWorkType() { + return specWorkType; + } + + public void setSpecWorkType(Integer specWorkType) { + this.specWorkType = specWorkType; + } + + public Long getState() { + return state; + } + + public void setState(Long state) { + this.state = state; + } + + public String getEnterDate() { + return enterDate; + } + + public void setEnterDate(String enterDate) { + this.enterDate = enterDate; + } + + public Long getCompanyId() { + return companyId; + } + + public void setCompanyId(Long companyId) { + this.companyId = companyId; + } + + public String getCompanyName() { + return companyName; + } + + public void setCompanyName(String companyName) { + this.companyName = companyName; + } + + public Long getIsDel() { + return isDel; + } + + public void setIsDel(Long isDel) { + this.isDel = isDel; + } +} diff --git a/yanzhu-jh/src/main/java/com/yanzhu/jh/work/service/impl/WorkTrainServiceImpl.java b/yanzhu-jh/src/main/java/com/yanzhu/jh/work/service/impl/WorkTrainServiceImpl.java index a1a4c28d..ae7611b4 100644 --- a/yanzhu-jh/src/main/java/com/yanzhu/jh/work/service/impl/WorkTrainServiceImpl.java +++ b/yanzhu-jh/src/main/java/com/yanzhu/jh/work/service/impl/WorkTrainServiceImpl.java @@ -194,14 +194,7 @@ public class WorkTrainServiceImpl implements IWorkTrainService }else{ deptid = SecurityUtils.getDeptId(); } - - SysDept sysDept = sysDeptMapper.selectDeptById(deptid); - if(DeptTypeEnum.JTGS.getCode().equals(sysDept.getTypeFlag()) || DeptTypeEnum.ZGS.getCode().equals(sysDept.getTypeFlag())){ - SurProject surProject = surProjectMapper.selectSurProjectById(workTrain.getProjectId()); - dept.setDeptId(surProject.getDeptId()); - }else{ - dept.setDeptId(sysDept.getDeptId()); - } + dept.setDeptId(deptid); dept.setIsMain(PublicStateEnum.YES.getCode()); workTrainDeptList.add(dept);