|
|
@@ -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,11 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
+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 +207,12 @@ public class OrderGoodsServiceImpl extends ServiceImpl<OrderGoodsMapper, OrderGo
|
|
|
@Autowired
|
|
|
private IMajorService iMajorService;
|
|
|
|
|
|
+ @Autowired
|
|
|
+ private IArtisanCheckService iArtisanCheckService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private IArtisanDataService iArtisanDataService;
|
|
|
+
|
|
|
|
|
|
|
|
|
@Override
|
|
|
@@ -1022,6 +1036,233 @@ 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("申报人员姓名");
|
|
|
+ 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("申报专业");
|
|
|
+ vo.setReason("申报专业不符合");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(bo.getCompanyName())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("现工作单位");
|
|
|
+ vo.setReason("现工作单位不能为空");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(bo.getInsured())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("参保单位");
|
|
|
+ vo.setReason("参保单位不能为空");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ //参保时间
|
|
|
+ if (StringUtils.isBlank(bo.getInsuredStartTime()) || StringUtils.isBlank(bo.getInsuredEndTime())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("参保时间");
|
|
|
+ vo.setReason("参保时间不能为空");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
|
|
|
+ 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("参保时间");
|
|
|
+ vo.setReason("参保时间小于半年");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ //学历情况
|
|
|
+ //学历等级
|
|
|
+ if (StringUtils.isBlank(bo.getEduLevel())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("学历等级");
|
|
|
+ vo.setReason("学历等级不能为空");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+ //学历专业
|
|
|
+ if (StringUtils.isBlank(bo.getEduMajor())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("学历专业");
|
|
|
+ vo.setReason("学历专业不能为空");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+ if (!artisanChecks.stream().anyMatch(x -> x.getMajor().equals(bo.getEduMajor()))){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("学历专业");
|
|
|
+ vo.setReason("学历专业不符合");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ //毕业时间
|
|
|
+ if (StringUtils.isBlank(bo.getGraduateTime())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("毕业时间");
|
|
|
+ vo.setReason("毕业时间不能为空");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (bo.getType().equals("评审") && bo.getEducation().equals("有")){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("继续教育");
|
|
|
+ vo.setReason("评审需有继续教育证明");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(bo.getExistingLevel())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("现有资格等级");
|
|
|
+ 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("现有资格专业");
|
|
|
+ vo.setReason("现有资格专业不符合");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+ if (StringUtils.isBlank(bo.getGraduateTime())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("毕业时间");
|
|
|
+ vo.setReason("毕业时间不能为空");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ 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.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.getGraduateTime())){
|
|
|
+ AssistantCheckVo vo = new AssistantCheckVo();
|
|
|
+ vo.setField("graduateTime");
|
|
|
+ vo.setReason("毕业时间不能为空");
|
|
|
+ vos.add(vo);
|
|
|
+ }
|
|
|
+ AssistantResultVo resultVo = new AssistantResultVo();
|
|
|
+ resultVo.setCheckVos(vos);
|
|
|
+ if (CollectionUtils.isEmpty(vos)){
|
|
|
+ //校验通过
|
|
|
+ ArtisanData data = new ArtisanData();
|
|
|
+ data.setCreateTime(DateUtils.getNowTime());
|
|
|
+ data.setUpdateTime(DateUtils.getNowTime());
|
|
|
+ data.setUserId(userId);
|
|
|
+ data.setGoodsId(bo.getGoodsId());
|
|
|
+ data.setDataStr(JSON.toJSONString(bo));
|
|
|
+ iArtisanDataService.save(data);
|
|
|
+ resultVo.setId(data.getId());
|
|
|
+ }
|
|
|
+
|
|
|
+ return resultVo;
|
|
|
+ }
|
|
|
+
|
|
|
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"));
|