From c50686f775664c5a722f4b5ad7afde1e5214b14d Mon Sep 17 00:00:00 2001 From: jiangping <jp@doumee.com> Date: 星期二, 05 十一月 2024 19:07:21 +0800 Subject: [PATCH] 最新版本541200007 --- server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java | 257 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 files changed, 243 insertions(+), 14 deletions(-) diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java index b7f1b1a..a08b6e5 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/CarsServiceImpl.java @@ -1,5 +1,7 @@ package com.doumee.service.business.impl; +import cn.hutool.core.util.IdcardUtil; +import cn.hutool.core.util.PhoneUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -11,14 +13,15 @@ import com.doumee.core.model.PageData; import com.doumee.core.model.PageWrap; import com.doumee.core.utils.Constants; +import com.doumee.core.utils.DESUtil; import com.doumee.core.utils.ScientificNotationTUtil; import com.doumee.core.utils.Utils; import com.doumee.dao.admin.request.CarsImport; import com.doumee.dao.admin.request.CarsQuery; import com.doumee.dao.admin.request.MemberImport; import com.doumee.dao.admin.response.CarsDTO; -import com.doumee.dao.business.CarsMapper; -import com.doumee.dao.business.MemberMapper; +import com.doumee.dao.business.*; +import com.doumee.dao.business.dao.CompanyMapper; import com.doumee.dao.business.join.CarJoinMapper; import com.doumee.dao.business.join.ParkBookJoinMapper; import com.doumee.dao.business.model.*; @@ -30,11 +33,13 @@ import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import org.springframework.web.multipart.MultipartFile; +import java.math.BigDecimal; import java.util.*; /** @@ -53,10 +58,16 @@ @Autowired private CarJoinMapper carJoinMapper; @Autowired + private CompanyMapper companyMapper; + @Autowired + private CategoryMapper categoryMapper; + @Autowired private MemberMapper memberMapper; @Autowired - private ParkBookJoinMapper parkBookJoinMapper; + private ParkBookMapper parkBookJoinMapper; + @Autowired + private ParksMapper parksMapper; @Override public Integer create(Cars model) { @@ -170,7 +181,72 @@ } return true; } + public boolean dealCancelBookBizNoException(String code,Date date){ + boolean r = true; + List<ParkBook> parkBooks = parkBookJoinMapper.selectJoinList(ParkBook.class,new MPJLambdaWrapper<ParkBook>() + .selectAll(ParkBook.class ) + .selectAs(Parks::getHkId,ParkBook::getParkHkId ) + .leftJoin(Parks.class,Parks::getId,ParkBook::getParkId) + .eq(ParkBook::getCarCode,code) + .eq(ParkBook::getIsdeleted,Constants.ZERO )); + if(parkBooks !=null){ + for(ParkBook c : parkBooks){ + //濡傛灉鍙栨秷棰勭害锛屽垯杩涜鍙栨秷鍖呮湡 + if(StringUtils.isNotBlank(c.getParkHkId()) + && StringUtils.isNotBlank(c.getCarCode())){ + boolean result = HkSyncParkServiceImpl.cancelParkBookHk(c); + if(!result){ + r= false; + c.setHkStatus(Constants.ONE); + c.setRemark("鍙栨秷鍖呮湡澶辫触"); + }else{ + c.setHkStatus(Constants.ONE); + c.setRemark("鍙栨秷鍖呮湡鎴愬姛"); + } + }else{ + c.setHkStatus(Constants.TWO);//涓嬪彂澶辫触 + c.setRemark("鏃犳晥鍋滆溅鍦烘巿鏉冧笅鍙戯紝鍙栨秷鍖呮湡澶辫触锛岀洿鎺ュ垹闄よ褰�"); + } + if(r){ + c.setHkDate(date); + c.setIsdeleted(Constants.ONE); + parkBookJoinMapper.updateById(c); + } + } + } + return r; + } + @Override + @Async + public void dealCarsAuthBiz(List<Cars> carsList){ + if(carsList== null || carsList.size() == 0 ){ + return; + } + Date date = new Date(); + MPJLambdaWrapper<Parks> queryWrapper1 = new MPJLambdaWrapper<>(); + queryWrapper1.selectAll(Parks.class); + queryWrapper1.eq(Parks::getIsdeleted,Constants.ZERO ); + List<Parks> parksList = parksMapper.selectList( queryWrapper1); + if(parksList==null ||parksList.size() == 0){ + return; + } + for(Cars model : carsList){ + model.setAuthTimeType(Constants.ZERO); + model.setStartTime(null); + model.setEndTime(null); + ParkBookServiceImpl.dealCarAuthByModel(model,model.getEdirot(),parksList,date,parkBookJoinMapper); + model.setAuthStatus(Constants.ONE);//宸叉巿鏉� + carsMapper.update(null,new UpdateWrapper<Cars>().lambda() + .eq(Cars::getId,model.getId()) + .set(Cars::getEditDate,date) + .set(Cars::getEdirot,model.getEdirot()) + .set(Cars::getAuthStatus,Constants.ONE) + .set(Cars::getStartTime,null) + .set(Cars::getEndTime,null) + ); + } + } @Override public void delete(Cars cars) { UpdateWrapper<Cars> deleteWrapper = new UpdateWrapper<>(cars); @@ -394,7 +470,7 @@ @Override @Transactional(rollbackFor = {BusinessException.class,Exception.class}) - public String importBatch(MultipartFile file, LoginUserInfo loginUserInfo){ + public List<Cars> importBatch(MultipartFile file, LoginUserInfo loginUserInfo){ Boolean importing = (Boolean) redisTemplate.opsForValue().get(Constants.RedisKeys.IMPORTING_CARS); if(importing!=null && importing){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝宸插瓨鍦ㄨ溅杈嗗鍏ヤ换鍔℃鍦ㄦ墽琛屼腑锛岃绋嶅悗鍐嶈瘯锛�"); @@ -404,7 +480,7 @@ ExcelImporter ie = null; List<CarsImport> dataList =null; try { - ie = new ExcelImporter(file,1,0); + ie = new ExcelImporter(file,0,0); dataList = ie.getDataList(CarsImport.class,null); } catch (Exception e) { e.printStackTrace(); @@ -412,38 +488,191 @@ if(dataList == null || dataList.size() ==0){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝褰曞叆鏁版嵁涓虹┖锛�"); } - List<Cars> list = carJoinMapper.selectJoinList(Cars.class,new MPJLambdaWrapper<Cars>() + List<Cars> allCarsList = carJoinMapper.selectJoinList(Cars.class,new MPJLambdaWrapper<Cars>() .selectAll(Cars.class) .eq(Cars::getIsdeleted,Constants.ZERO) ); - List<Member> memberList = memberMapper.selectList(new QueryWrapper<Member>().lambda() + List<Company> companyList = companyMapper.selectJoinList(Company.class,new MPJLambdaWrapper<Company>() + .selectAll(Company.class) + .eq(Company::getIsdeleted,Constants.ZERO) + ); + List<Category> categoryList = categoryMapper.selectList(new QueryWrapper<Category>().lambda() + .eq(Category::getType,Constants.ONE) + .eq(Category::getIsdeleted,Constants.ZERO)); + + List<Member> memberList = memberMapper.selectJoinList(Member.class,new MPJLambdaWrapper<Member>() + .leftJoin(Company.class,Company::getId,Member::getCompanyId) + .selectAll(Member.class) + .selectAs(Company::getCompanyNamePath,Member::getCompanyNamePath) .eq(Member::getType,Constants.TWO) .eq(Member::getIsdeleted,Constants.ZERO)); List<Cars> newList = new ArrayList<>(); + List<Cars> updateList = new ArrayList<>(); for(int i=0;i<dataList.size();i++){ CarsImport model = dataList.get(i); model.setPhone(ScientificNotationTUtil.convertToString(model.getPhone())); - /* if(StringUtils.isBlank(model.getCode()) - &&StringUtils.isBlank(model.getIdcardNo()) + if(StringUtils.isBlank(model.getCode()) + &&StringUtils.isBlank(model.getCategoryName()) + &&StringUtils.isBlank(model.getType()) + &&StringUtils.isBlank(model.getSex()) + &&StringUtils.isBlank(model.getIdcard()) + &&StringUtils.isBlank(model.getParkName()) &&StringUtils.isBlank(model.getPhone()) + &&StringUtils.isBlank(model.getMemberName()) &&StringUtils.isBlank(model.getCompanyName())){ continue; } - Cars car = checkModelParam(model,newList,i,loginUserInfo,list,companyList,); - newList.add(car);*/ + checkModelParam(model,newList,updateList,i,loginUserInfo,allCarsList,memberList,companyList,categoryList); } - if(newList == null || newList.size() ==0){ + if((newList == null || newList.size() ==0) && updateList.size() == 0){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝褰曞叆鏈夋晥鏁版嵁涓虹┖锛�"); } -// dealHkUserBizBatch(newList); - return "瀵煎叆鎴愬姛"; + if(newList.size()>0){ + carsMapper.insert(newList); + } + if(updateList.size()>0){ + for (Cars c : updateList){ + carsMapper.updateById(c); + } + } + newList.addAll(updateList); + return newList; }catch (BusinessException e){ throw e; }catch (Exception e){ + e.printStackTrace(); throw new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"杞﹁締淇℃伅瀵煎叆澶辫触锛岃绋嶅悗閲嶈瘯"); }finally { redisTemplate.delete(Constants.RedisKeys.IMPORTING_CARS); } + } + + private Cars checkModelParam(CarsImport model, List<Cars> newList + , List<Cars> updateList + ,int index + ,LoginUserInfo loginUserInfo + ,List<Cars> allList + ,List<Member> memberList + ,List<Company> companyList + ,List<Category> categoryList ) { + if(StringUtils.isBlank(model.getCode()) + ||StringUtils.isBlank(model.getType()) + ||StringUtils.isBlank(model.getCategoryName()) + ||StringUtils.isBlank(model.getCompanyName())){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+(index+2)+"琛岃溅杈嗕俊鎭笉瀹屾暣锛岃妫�鏌ヨ〃鏍煎唴瀹癸紒"); + } + if(model.getPhone().indexOf(".")>=Constants.ZERO){ + model.setPhone( + String.valueOf(new BigDecimal(model.getPhone()).intValue()) + ); + } + for(Cars param: newList){ + if(StringUtils.isNotBlank(model.getCode())&&StringUtils.isNotBlank(param.getCode())) { + if (StringUtils.equals(model.getCode(), param.getCode())) { + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "瀵逛笉璧凤紝绗�" + (index + 3) + "琛岃溅鐗屽彿銆�" + model.getCode() + "銆戦噸澶嶅嚭鐜帮紝璇锋鏌ヨ〃鏍煎唴瀹癸紒"); + } + } + } + Cars cars = findCarsFromList(model.getCode(),allList); + if(cars == null){ + cars = new Cars(); + cars.setCreator(loginUserInfo.getId()); + cars.setCreateDate(new Date()); + cars.setIsnew(Constants.ONE); + newList.add(cars); + }else{ + cars.setIsnew(Constants.ZERO); + updateList.add(cars); + } + //绫诲瀷 0瀹夋嘲鍏姟杞� 1瀹夋嘲鑷湁鐗╂祦杞� 2鍏跺畠 + if(StringUtils.equals(model.getType(),"瀹夋嘲鍏姟杞�")){ + cars.setType(Constants.ZERO); + }else if(StringUtils.equals(model.getType(),"瀹夋嘲鑷湁鐗╂祦杞�")){ + cars.setType(Constants.ONE); + }else{ + cars.setType(Constants.TWO); + } + cars.setCode(model.getCode()); + Company company = findCompanyFromList(model.getCompanyName(),companyList); + if(company == null){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+(index+2)+"琛岀粍缁囧悕绉般��"+model.getCompanyName()+"銆戜笉瀛樺湪锛岃妫�鏌ヨ〃鏍煎唴瀹癸紒"); + } + if(StringUtils.isNotBlank(model.getPhone())){ + Member member = findMemberFromListByPhone(model.getPhone(),memberList); + if(member == null){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+(index+2)+"琛岃溅涓绘墜鏈哄彿銆�"+model.getPhone()+"銆戜笉瀛樺湪锛岃妫�鏌ヨ〃鏍煎唴瀹癸紒"); + } + cars.setMember(member); + cars.setMemberId(member.getId()); + } + Category category = findCategoryFromListByName(model.getCategoryName(),categoryList); + if(category == null){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"瀵逛笉璧凤紝绗�"+(index+2)+"琛岃溅杈嗗垎绫汇��"+model.getCategoryName()+"銆戜笉瀛樺湪锛岃妫�鏌ヨ〃鏍煎唴瀹癸紒"); + } + cars.setGroupId(company.getId()); + cars.setCateId(category.getId()); + cars.setEditDate(new Date()); + cars.setEdirot(loginUserInfo.getId()); + cars.setIsdeleted(Constants.ZERO); + return cars; + } + private Company findCompanyFromList(String companyName, List<Company> companyList) { + if(companyList !=null){ + for(Company company : companyList){ + if(StringUtils.equals(companyName,company.getCompanyNamePath())){ + return company; + } + } + } + return null; + } + private Cars findCarsFromList(String code, List<Cars> list) { + if(list !=null){ + for(Cars model : list){ + if(StringUtils.equals(code,model.getCode())){ + return model; + } + } + } + return null; + } + private Member findMemberFromListByPhone(String phone, List<Member> list) { + if(list !=null){ + for(Member member : list){ + if(StringUtils.equals(phone,member.getPhone())){ + return member; + } + } + } + return null; + } + private Category findCategoryFromListByName(String name, List<Category> list) { + String[] names = name.split("/"); + if(names ==null || names.length !=2 ){ + return null; + } + Category pc = null; + if(list !=null){ + for(Category model : list){ + if(StringUtils.equals(names[0],model.getName()) && model.getParentId() ==null){ + pc = model; + break; + } + } + if(pc ==null){ + return null; + } + for(Category model : list){ + if(StringUtils.equals(names[1],model.getName()) && Constants.equalsInteger(model.getParentId() ,pc.getId())){ + pc = model; + } + } + return pc; + } + return null; + } + + } -- Gitblit v1.9.3