|
|
@@ -17,6 +17,10 @@ import com.zhongzheng.common.type.EncryptHandler;
|
|
|
import com.zhongzheng.common.utils.DateUtils;
|
|
|
import com.zhongzheng.common.utils.SecurityUtils;
|
|
|
import com.zhongzheng.common.utils.ServletUtils;
|
|
|
+import com.zhongzheng.modules.activity.domain.ArtisanCheck;
|
|
|
+import com.zhongzheng.modules.activity.domain.ArtisanData;
|
|
|
+import com.zhongzheng.modules.activity.service.IArtisanCheckService;
|
|
|
+import com.zhongzheng.modules.activity.service.IArtisanDataService;
|
|
|
import com.zhongzheng.modules.base.bo.ConsoleQueryBo;
|
|
|
import com.zhongzheng.modules.base.domain.ProfileTp;
|
|
|
import com.zhongzheng.modules.base.domain.ShoppingCart;
|
|
|
@@ -91,7 +95,13 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+import java.text.ParseException;
|
|
|
+import java.text.SimpleDateFormat;
|
|
|
+import java.time.LocalDate;
|
|
|
+import java.time.format.DateTimeFormatter;
|
|
|
+import java.time.temporal.ChronoUnit;
|
|
|
import java.util.*;
|
|
|
+import java.util.regex.Pattern;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
@@ -199,6 +209,12 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
|
|
|
@Autowired
|
|
|
private IMajorService iMajorService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private IArtisanCheckService iArtisanCheckService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IArtisanDataService iArtisanDataService;
|
|
|
+
|
|
|
|
|
|
|
|
|
@Override
|
|
|
@@ -1022,6 +1038,783 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
|
|
|
return baseMapper.getCertificateOrder();
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public AssistantResultVo assistantCheck(AssistantCheckBo bo,Long userId) {
|
|
|
+ AssistantResultVo resultVo = new AssistantResultVo();
|
|
|
+ List<AssistantCheckVo> vos = new ArrayList<>();
|
|
|
+ //基础中文名校验 - 纯汉字,2-4个字
|
|
|
+ String regex = "^[\u4e00-\u9fa5]{2,4}$";
|
|
|
+ boolean matches = Pattern.matches(regex, bo.getUserName());
|
|
|
+ if (StringUtils.isBlank(bo.getUserName()) || !matches){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("userName");
|
|
|
+ vo.setReason("申报人姓名输入不合法");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ //专业
|
|
|
+ List<ArtisanCheck> artisanChecks = iArtisanCheckService
|
|
|
+ .list(new LambdaQueryWrapper<ArtisanCheck>().eq(ArtisanCheck::getType, 1).eq(ArtisanCheck::getStatus, 1));
|
|
|
+ if (StringUtils.isBlank(bo.getMajor()) || !artisanChecks.stream().anyMatch(x -> x.getMajor().equals(bo.getMajor()))){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("major");
|
|
|
+ vo.setReason("申报专业不符合");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(bo.getCompanyName())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("companyName");
|
|
|
+ vo.setReason("现工作单位不能为空");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(bo.getInsured())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("insured");
|
|
|
+ vo.setReason("参保单位不能为空");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ //参保时间
|
|
|
+ if (StringUtils.isBlank(bo.getInsuredStartTime()) || StringUtils.isBlank(bo.getInsuredEndTime())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("insuredStartTime");
|
|
|
+ vo.setReason("参保时间不能为空");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
+ LocalDate date1 = LocalDate.parse(bo.getInsuredStartTime(), formatter);
|
|
|
+ LocalDate date2 = LocalDate.parse(bo.getInsuredEndTime(), formatter);
|
|
|
+ // 计算两个日期之间的月数差异
|
|
|
+ long monthsBetween = ChronoUnit.MONTHS.between(date1, date2);
|
|
|
+ // 取绝对值并判断是否大于6个月
|
|
|
+ if (Math.abs(monthsBetween) < 6){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("insuredStartTime");
|
|
|
+ vo.setReason("参保时间小于半年");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ //学历情况
|
|
|
+ //学历等级
|
|
|
+ if (StringUtils.isBlank(bo.getEduLevel())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("eduLevel");
|
|
|
+ vo.setReason("学历等级不能为空");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ List<String> list = Arrays.asList("职高", "高中", "专科", "本科", "硕士研究生", "博士研究生");
|
|
|
+ if (StringUtils.isBlank(bo.getEduLevel()) || !list.contains(bo.getEduLevel())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("eduLevel");
|
|
|
+ vo.setReason("学历等级不符合标准");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ //学历专业
|
|
|
+ if (StringUtils.isBlank(bo.getEduMajor())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("eduMajor");
|
|
|
+ vo.setReason("学历专业不能为空");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!artisanChecks.stream().anyMatch(x -> x.getMajor().equals(bo.getEduMajor()))){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("eduMajor");
|
|
|
+ vo.setReason("学历专业不符合");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ //毕业时间
|
|
|
+ if (StringUtils.isBlank(bo.getGraduateTime())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("graduateTime");
|
|
|
+ vo.setReason("毕业时间不能为空");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isNotBlank(bo.getEduLevel())){
|
|
|
+ if (bo.getEduLevel().equals("职高") || bo.getEduLevel().equals("高中")){
|
|
|
+ //从事本专业技术工作满4年
|
|
|
+ if (isFullYear(bo.getGraduateTime(),"yyyy-MM-dd",4)){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("eduLevel");
|
|
|
+ vo.setReason("学历属于职高/高中,从事本专业技术工作满4年");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (bo.getEduLevel().equals("专科")){
|
|
|
+ //从事本专业技术工作满2年
|
|
|
+ if (isFullYear(bo.getGraduateTime(),"yyyy-MM-dd",2)){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("eduLevel");
|
|
|
+ vo.setReason("学历属于专科,从事本专业技术工作满2年");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (bo.getEduLevel().equals("本科")){
|
|
|
+ //从事本专业技术工作满1年
|
|
|
+ if (isFullYear(bo.getGraduateTime(),"yyyy-MM-dd",1)){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("eduLevel");
|
|
|
+ vo.setReason("学历属于本科,从事本专业技术工作满1年");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (bo.getType().equals("评审") && !bo.getEducation().equals("有")){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("education");
|
|
|
+ vo.setReason("评审需有继续教育证明");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (bo.getType().equals("认定")){
|
|
|
+ //认定:学历专业和申报专业需一样
|
|
|
+ if (!bo.getExistingMajor().equals(bo.getMajor())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("major");
|
|
|
+ vo.setReason("认定:学历专业和申报专业需要一样");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isNotBlank(bo.getEduLevel()) && (bo.getEduLevel().equals("职高") || bo.getEduLevel().equals("高中") || bo.getEduLevel().equals("专科"))){
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(bo.getExistingLevel())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("existingLevel");
|
|
|
+ vo.setReason("学历为职高/高中/专科,需取得技术员职称后才能申请助工");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(bo.getExistingMajor()) || !artisanChecks.stream().anyMatch(x -> x.getMajor().equals(bo.getExistingMajor()))){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("existingMajor");
|
|
|
+ vo.setReason("学历为职高/高中/专科,需取得技术员职称后才能申请助工");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(bo.getExistingTenant())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("existingTenant");
|
|
|
+ vo.setReason("学历为职高/高中/专科,需取得技术员职称后才能申请助工");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(bo.getCertificate())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("certificate");
|
|
|
+ vo.setReason("学历为职高/高中/专科,需取得技术员职称后才能申请助工");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(bo.getIssueDate())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("issueDate");
|
|
|
+ vo.setReason("学历为职高/高中/专科,需取得技术员职称后才能申请助工");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (CollectionUtils.isEmpty(vos)){
|
|
|
+ //校验通过
|
|
|
+ ArtisanData data = new ArtisanData();
|
|
|
+ data.setCreateTime(DateUtils.getNowTime());
|
|
|
+ data.setUpdateTime(DateUtils.getNowTime());
|
|
|
+ data.setUserId(userId);
|
|
|
+ data.setGoodsId(bo.getGoodsId());
|
|
|
+ data.setMajorName(bo.getMajorName());
|
|
|
+ data.setDataStr(JSON.toJSONString(bo));
|
|
|
+ iArtisanDataService.save(data);
|
|
|
+ resultVo.setId(data.getId());
|
|
|
+ }else {
|
|
|
+ resultVo.setCheckVos(vos);
|
|
|
+ }
|
|
|
+ return resultVo;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public AssistantResultVo technicianCheck(TechnicianCheckBo bo,Long userId) {
|
|
|
+ //技术员校验
|
|
|
+ List<AssistantCheckVo> vos = new ArrayList<>();
|
|
|
+
|
|
|
+ //基础中文名校验 - 纯汉字,2-4个字
|
|
|
+ String regex = "^[\u4e00-\u9fa5]{2,4}$";
|
|
|
+ boolean matches = Pattern.matches(regex, bo.getUserName());
|
|
|
+ if (StringUtils.isBlank(bo.getUserName()) || !matches){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("userName");
|
|
|
+ vo.setReason("申报人姓名输入不合法");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ //专业
|
|
|
+ List<ArtisanCheck> artisanChecks = iArtisanCheckService
|
|
|
+ .list(new LambdaQueryWrapper<ArtisanCheck>().eq(ArtisanCheck::getType, 1).eq(ArtisanCheck::getStatus, 1));
|
|
|
+ if (StringUtils.isBlank(bo.getMajor()) || !artisanChecks.stream().anyMatch(x -> x.getMajor().equals(bo.getMajor()))){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("major");
|
|
|
+ vo.setReason("申报专业不符合");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(bo.getCompanyName())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("companyName");
|
|
|
+ vo.setReason("现工作单位不能为空");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(bo.getInsured())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("insured");
|
|
|
+ vo.setReason("参保单位不能为空");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ //参保时间
|
|
|
+ if (StringUtils.isBlank(bo.getInsuredStartTime()) || StringUtils.isBlank(bo.getInsuredEndTime())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("insuredStartTime");
|
|
|
+ vo.setReason("参保时间不能为空");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
+ LocalDate date1 = LocalDate.parse(bo.getInsuredStartTime(), formatter);
|
|
|
+ LocalDate date2 = LocalDate.parse(bo.getInsuredEndTime(), formatter);
|
|
|
+ // 计算两个日期之间的月数差异
|
|
|
+ long monthsBetween = ChronoUnit.MONTHS.between(date1, date2);
|
|
|
+ // 取绝对值并判断是否大于6个月
|
|
|
+ if (Math.abs(monthsBetween) < 6){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("insuredStartTime");
|
|
|
+ vo.setReason("参保时间小于半年");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (bo.getType().equals("评审") && !bo.getEducation().equals("有")){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("education");
|
|
|
+ vo.setReason("评审需有继续教育证明");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ List<String> list = Arrays.asList("职高", "高中", "专科", "本科", "硕士研究生", "博士研究生");
|
|
|
+ if (StringUtils.isBlank(bo.getExistingLevel()) || !list.contains(bo.getExistingLevel())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("existingLevel");
|
|
|
+ vo.setReason("学历等级不符合标准");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isNotBlank(bo.getExistingLevel()) && (bo.getExistingLevel().equals("职高") || bo.getExistingLevel().equals("高中"))){
|
|
|
+ //职高或者高中毕业时间要大于一年
|
|
|
+ if (isFullYear(bo.getGraduateTime(),"yyyy-MM-dd",1)){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("existingLevel");
|
|
|
+ vo.setReason("学历属于职高/高中,毕业时间需满1年");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(bo.getExistingMajor()) || !artisanChecks.stream().anyMatch(x -> x.getMajor().equals(bo.getExistingMajor()))){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("existingMajor");
|
|
|
+ vo.setReason("学历专业不符合");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (bo.getType().equals("认定")){
|
|
|
+ //认定:学历专业和申报专业需一样
|
|
|
+ if (!bo.getExistingMajor().equals(bo.getMajor())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("major");
|
|
|
+ vo.setReason("认定:学历专业和申报专业需要一样");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(bo.getGraduateTime())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("graduateTime");
|
|
|
+ vo.setReason("毕业时间不能为空");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+ AssistantResultVo resultVo = new AssistantResultVo();
|
|
|
+ if (CollectionUtils.isEmpty(vos)){
|
|
|
+ //校验通过
|
|
|
+ ArtisanData data = new ArtisanData();
|
|
|
+ data.setCreateTime(DateUtils.getNowTime());
|
|
|
+ data.setUpdateTime(DateUtils.getNowTime());
|
|
|
+ data.setUserId(userId);
|
|
|
+ data.setGoodsId(bo.getGoodsId());
|
|
|
+ data.setMajorName(bo.getMajorName());
|
|
|
+ data.setDataStr(JSON.toJSONString(bo));
|
|
|
+ iArtisanDataService.save(data);
|
|
|
+ resultVo.setId(data.getId());
|
|
|
+ }else {
|
|
|
+ resultVo.setCheckVos(vos);
|
|
|
+ }
|
|
|
+
|
|
|
+ return resultVo;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public AssistantResultVo engineerIntermediateCheck(EngineerCheckBo bo, Long userId) {
|
|
|
+ AssistantResultVo resultVo = new AssistantResultVo();
|
|
|
+ List<AssistantCheckVo> vos = new ArrayList<>();
|
|
|
+ //基础中文名校验 - 纯汉字,2-4个字
|
|
|
+ String regex = "^[\u4e00-\u9fa5]{2,4}$";
|
|
|
+ boolean matches = Pattern.matches(regex, bo.getUserName());
|
|
|
+ if (StringUtils.isBlank(bo.getUserName()) || !matches){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("userName");
|
|
|
+ vo.setReason("申报人姓名输入不合法");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ //专业
|
|
|
+ List<ArtisanCheck> artisanChecks = iArtisanCheckService
|
|
|
+ .list(new LambdaQueryWrapper<ArtisanCheck>().eq(ArtisanCheck::getType, 1).eq(ArtisanCheck::getStatus, 1));
|
|
|
+ if (StringUtils.isBlank(bo.getMajor()) || !artisanChecks.stream().anyMatch(x -> x.getMajor().equals(bo.getMajor()))){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("major");
|
|
|
+ vo.setReason("申报专业不符合");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(bo.getCompanyName())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("companyName");
|
|
|
+ vo.setReason("现工作单位不能为空");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(bo.getInsured())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("insured");
|
|
|
+ vo.setReason("参保单位不能为空");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ //参保时间
|
|
|
+ if (StringUtils.isBlank(bo.getInsuredStartTime()) || StringUtils.isBlank(bo.getInsuredEndTime())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("insuredStartTime");
|
|
|
+ vo.setReason("参保时间不能为空");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
+ LocalDate date1 = LocalDate.parse(bo.getInsuredStartTime(), formatter);
|
|
|
+ LocalDate date2 = LocalDate.parse(bo.getInsuredEndTime(), formatter);
|
|
|
+ // 计算两个日期之间的月数差异
|
|
|
+ long monthsBetween = ChronoUnit.MONTHS.between(date1, date2);
|
|
|
+ // 取绝对值并判断是否大于6个月
|
|
|
+ if (Math.abs(monthsBetween) < 6){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("insuredStartTime");
|
|
|
+ vo.setReason("参保时间小于半年");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ //学历情况
|
|
|
+ //学历等级
|
|
|
+ if (StringUtils.isBlank(bo.getEduLevel())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("eduLevel");
|
|
|
+ vo.setReason("学历等级不能为空");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ List<String> list = Arrays.asList("专科", "本科", "硕士研究生", "博士研究生");
|
|
|
+ if (StringUtils.isBlank(bo.getEduLevel()) || !list.contains(bo.getEduLevel())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("eduLevel");
|
|
|
+ vo.setReason("学历等级不符合标准");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ //学历专业
|
|
|
+ if (StringUtils.isBlank(bo.getEduMajor())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("eduMajor");
|
|
|
+ vo.setReason("学历专业不能为空");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!artisanChecks.stream().anyMatch(x -> x.getMajor().equals(bo.getEduMajor()))){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("eduMajor");
|
|
|
+ vo.setReason("学历专业不符合");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ //毕业时间
|
|
|
+ if (StringUtils.isBlank(bo.getGraduateTime())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("graduateTime");
|
|
|
+ vo.setReason("毕业时间不能为空");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isNotBlank(bo.getEduLevel())){
|
|
|
+ if (bo.getEduLevel().equals("专科")){
|
|
|
+ //从事本专业技术工作满4年
|
|
|
+ if (isFullYear(bo.getGraduateTime(),"yyyy-MM-dd",4)){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("eduLevel");
|
|
|
+ vo.setReason("学历属于专科,从事本专业技术工作满4年");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (bo.getEduLevel().equals("本科")){
|
|
|
+ //从事本专业技术工作满4年
|
|
|
+ if (isFullYear(bo.getGraduateTime(),"yyyy-MM-dd",4)){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("eduLevel");
|
|
|
+ vo.setReason("学历属于本科,从事本专业技术工作满4年");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (bo.getEduLevel().equals("硕士研究生")){
|
|
|
+ //从事本专业技术工作满2年
|
|
|
+ if (isFullYear(bo.getGraduateTime(),"yyyy-MM-dd",2)){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("eduLevel");
|
|
|
+ vo.setReason("学历属于硕士研究生,从事本专业技术工作满2年");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //技术总结、论文
|
|
|
+ if (StringUtils.isBlank(bo.getThesis())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("thesis");
|
|
|
+ vo.setReason("在公开出版发行专业期刊上独立发表1篇本专业相关学术论文");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (bo.getType().equals("评审") && !bo.getEducation().equals("有")){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("education");
|
|
|
+ vo.setReason("评审需有继续教育证明");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (bo.getType().equals("认定")){
|
|
|
+ //认定:学历专业和申报专业需一样
|
|
|
+ if (!bo.getExistingMajor().equals(bo.getMajor())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("major");
|
|
|
+ vo.setReason("认定:学历专业和申报专业需要一样");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isNotBlank(bo.getEduLevel()) && (bo.getEduLevel().equals("专科") || bo.getEduLevel().equals("本科") || bo.getEduLevel().equals("硕士研究生"))){
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(bo.getExistingLevel())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("existingLevel");
|
|
|
+ vo.setReason("学历为专科/本科/硕士研究生,需取得助理工程师职称后才能申请");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(bo.getExistingMajor()) || !artisanChecks.stream().anyMatch(x -> x.getMajor().equals(bo.getExistingMajor()))){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("existingMajor");
|
|
|
+ vo.setReason("学历为专科/本科/硕士研究生,需取得助理工程师职称后才能申请");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(bo.getExistingTenant())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("existingTenant");
|
|
|
+ vo.setReason("学历为专科/本科/硕士研究生,需取得助理工程师职称后才能申请");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(bo.getCertificate())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("certificate");
|
|
|
+ vo.setReason("学历为专科/本科/硕士研究生,需取得助理工程师职称后才能申请");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(bo.getIssueDate())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("issueDate");
|
|
|
+ vo.setReason("学历为专科/本科/硕士研究生,需取得助理工程师职称后才能申请");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (CollectionUtils.isEmpty(vos)){
|
|
|
+ //校验通过
|
|
|
+ ArtisanData data = new ArtisanData();
|
|
|
+ data.setCreateTime(DateUtils.getNowTime());
|
|
|
+ data.setUpdateTime(DateUtils.getNowTime());
|
|
|
+ data.setUserId(userId);
|
|
|
+ data.setGoodsId(bo.getGoodsId());
|
|
|
+ data.setMajorName(bo.getMajorName());
|
|
|
+ data.setDataStr(JSON.toJSONString(bo));
|
|
|
+ iArtisanDataService.save(data);
|
|
|
+ resultVo.setId(data.getId());
|
|
|
+ }else {
|
|
|
+ resultVo.setCheckVos(vos);
|
|
|
+ }
|
|
|
+ return resultVo;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public AssistantResultVo engineerAdvancedCheck(EngineerCheckBo bo, Long userId) {
|
|
|
+ AssistantResultVo resultVo = new AssistantResultVo();
|
|
|
+ List<AssistantCheckVo> vos = new ArrayList<>();
|
|
|
+ //基础中文名校验 - 纯汉字,2-4个字
|
|
|
+ String regex = "^[\u4e00-\u9fa5]{2,4}$";
|
|
|
+ boolean matches = Pattern.matches(regex, bo.getUserName());
|
|
|
+ if (StringUtils.isBlank(bo.getUserName()) || !matches){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("userName");
|
|
|
+ vo.setReason("申报人姓名输入不合法");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ //专业
|
|
|
+ List<ArtisanCheck> artisanChecks = iArtisanCheckService
|
|
|
+ .list(new LambdaQueryWrapper<ArtisanCheck>().eq(ArtisanCheck::getType, 1).eq(ArtisanCheck::getStatus, 1));
|
|
|
+ if (StringUtils.isBlank(bo.getMajor()) || !artisanChecks.stream().anyMatch(x -> x.getMajor().equals(bo.getMajor()))){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("major");
|
|
|
+ vo.setReason("申报专业不符合");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(bo.getCompanyName())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("companyName");
|
|
|
+ vo.setReason("现工作单位不能为空");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(bo.getInsured())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("insured");
|
|
|
+ vo.setReason("参保单位不能为空");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ //参保时间
|
|
|
+ if (StringUtils.isBlank(bo.getInsuredStartTime()) || StringUtils.isBlank(bo.getInsuredEndTime())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("insuredStartTime");
|
|
|
+ vo.setReason("参保时间不能为空");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
|
|
+ LocalDate date1 = LocalDate.parse(bo.getInsuredStartTime(), formatter);
|
|
|
+ LocalDate date2 = LocalDate.parse(bo.getInsuredEndTime(), formatter);
|
|
|
+ // 计算两个日期之间的月数差异
|
|
|
+ long monthsBetween = ChronoUnit.MONTHS.between(date1, date2);
|
|
|
+ // 取绝对值并判断是否大于6个月
|
|
|
+ if (Math.abs(monthsBetween) < 6){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("insuredStartTime");
|
|
|
+ vo.setReason("参保时间小于半年");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ //学历情况
|
|
|
+ //学历等级
|
|
|
+ if (StringUtils.isBlank(bo.getEduLevel())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("eduLevel");
|
|
|
+ vo.setReason("学历等级不能为空");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ List<String> list = Arrays.asList("本科", "硕士研究生", "博士研究生");
|
|
|
+ if (StringUtils.isBlank(bo.getEduLevel()) || !list.contains(bo.getEduLevel())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("eduLevel");
|
|
|
+ vo.setReason("学历等级不符合标准");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ //学历专业
|
|
|
+ if (StringUtils.isBlank(bo.getEduMajor())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("eduMajor");
|
|
|
+ vo.setReason("学历专业不能为空");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!artisanChecks.stream().anyMatch(x -> x.getMajor().equals(bo.getEduMajor()))){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("eduMajor");
|
|
|
+ vo.setReason("学历专业不符合");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ //毕业时间
|
|
|
+ if (StringUtils.isBlank(bo.getGraduateTime())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("graduateTime");
|
|
|
+ vo.setReason("毕业时间不能为空");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isNotBlank(bo.getEduLevel())){
|
|
|
+ if (bo.getEduLevel().equals("本科")){
|
|
|
+ //从事本专业技术工作满5年
|
|
|
+ if (isFullYear(bo.getGraduateTime(),"yyyy-MM-dd",5)){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("eduMajor");
|
|
|
+ vo.setReason("学历属于本科,从事本专业技术工作满5年");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (bo.getEduLevel().equals("硕士研究生")){
|
|
|
+ //从事本专业技术工作满5年
|
|
|
+ if (isFullYear(bo.getGraduateTime(),"yyyy-MM-dd",5)){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("eduLevel");
|
|
|
+ vo.setReason("学历属于硕士研究生,从事本专业技术工作满5年");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (bo.getEduLevel().equals("博士研究生")){
|
|
|
+ //从事本专业技术工作满2年
|
|
|
+ if (isFullYear(bo.getGraduateTime(),"yyyy-MM-dd",2)){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("eduLevel");
|
|
|
+ vo.setReason("学历属于博士研究生,从事本专业技术工作满2年");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ //技术总结、论文
|
|
|
+ if (StringUtils.isBlank(bo.getThesis())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("thesis");
|
|
|
+ vo.setReason("在公开出版发行专业期刊上独立发表1篇本专业相关学术论文");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (bo.getType().equals("评审") && !bo.getEducation().equals("有")){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("education");
|
|
|
+ vo.setReason("评审需有继续教育证明");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (bo.getType().equals("认定")){
|
|
|
+ //认定:学历专业和申报专业需一样
|
|
|
+ if (!bo.getExistingMajor().equals(bo.getMajor())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("major");
|
|
|
+ vo.setReason("认定:学历专业和申报专业需要一样");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isNotBlank(bo.getEduLevel()) && (bo.getEduLevel().equals("本科") || bo.getEduLevel().equals("硕士研究生") || bo.getEduLevel().equals("博士研究生"))){
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(bo.getExistingLevel())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("existingLevel");
|
|
|
+ vo.setReason("学历为专科/硕士研究生/博士研究生,需取得工程师职称后才能申请");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(bo.getExistingMajor()) || !artisanChecks.stream().anyMatch(x -> x.getMajor().equals(bo.getExistingMajor()))){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("existingMajor");
|
|
|
+ vo.setReason("学历为专科/硕士研究生/博士研究生,需取得工程师职称后才能申请");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(bo.getExistingTenant())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("existingTenant");
|
|
|
+ vo.setReason("学历为专科/硕士研究生/博士研究生,需取得工程师职称后才能申请");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(bo.getCertificate())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("certificate");
|
|
|
+ vo.setReason("学历为专科/硕士研究生/博士研究生,需取得工程师职称后才能申请");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(bo.getIssueDate())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("issueDate");
|
|
|
+ vo.setReason("学历为专科/硕士研究生/博士研究生,需取得工程师职称后才能申请");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (CollectionUtils.isEmpty(vos)){
|
|
|
+ //校验通过
|
|
|
+ ArtisanData data = new ArtisanData();
|
|
|
+ data.setCreateTime(DateUtils.getNowTime());
|
|
|
+ data.setUpdateTime(DateUtils.getNowTime());
|
|
|
+ data.setUserId(userId);
|
|
|
+ data.setGoodsId(bo.getGoodsId());
|
|
|
+ data.setMajorName(bo.getMajorName());
|
|
|
+ data.setDataStr(JSON.toJSONString(bo));
|
|
|
+ iArtisanDataService.save(data);
|
|
|
+ resultVo.setId(data.getId());
|
|
|
+ }else {
|
|
|
+ resultVo.setCheckVos(vos);
|
|
|
+ }
|
|
|
+ return resultVo;
|
|
|
+ }
|
|
|
+
|
|
|
+ private static boolean isFullYear(String dateString, String pattern,Integer year) {
|
|
|
+ try {
|
|
|
+ SimpleDateFormat sdf = new SimpleDateFormat(pattern);
|
|
|
+ Date targetDate = sdf.parse(dateString);
|
|
|
+ Date currentDate = new Date();
|
|
|
+
|
|
|
+ Calendar targetCalendar = Calendar.getInstance();
|
|
|
+ targetCalendar.setTime(targetDate);
|
|
|
+
|
|
|
+ Calendar currentCalendar = Calendar.getInstance();
|
|
|
+ currentCalendar.setTime(currentDate);
|
|
|
+
|
|
|
+ // 增加一年到目标日期
|
|
|
+ targetCalendar.add(Calendar.YEAR, year);
|
|
|
+
|
|
|
+ // 判断增加一年后的日期是否小于等于当前日期
|
|
|
+ return !targetCalendar.after(currentCalendar);
|
|
|
+
|
|
|
+ } catch (ParseException e) {
|
|
|
+ throw new IllegalArgumentException("日期格式错误或解析失败", e);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
private boolean checkUnique(Long GoodsId,Long UserId) {
|
|
|
ShoppingCart info = iShoppingCartService.getOne(new LambdaQueryWrapper<ShoppingCart>()
|
|
|
.eq(ShoppingCart::getUserId,UserId).eq(ShoppingCart::getGoodsId,GoodsId).last("limit 1"));
|