From 3f50e9e810b478dbbd3225d9e5cedf47f586b69b Mon Sep 17 00:00:00 2001 From: whywhyo <1511349576@qq.com> Date: 星期二, 05 九月 2023 11:25:43 +0800 Subject: [PATCH] 45386 --- zhang-content/src/main/java/com/ruoyi/service/impl/ZfCollectionServiceImpl.java | 464 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 464 insertions(+), 0 deletions(-) diff --git a/zhang-content/src/main/java/com/ruoyi/service/impl/ZfCollectionServiceImpl.java b/zhang-content/src/main/java/com/ruoyi/service/impl/ZfCollectionServiceImpl.java index 2ab67fa..f5e0788 100644 --- a/zhang-content/src/main/java/com/ruoyi/service/impl/ZfCollectionServiceImpl.java +++ b/zhang-content/src/main/java/com/ruoyi/service/impl/ZfCollectionServiceImpl.java @@ -1,11 +1,35 @@ package com.ruoyi.service.impl; +import com.alibaba.fastjson2.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.fasterxml.jackson.core.JsonParser; +import com.ruoyi.common.core.domain.AjaxResult; +import com.ruoyi.common.core.domain.entity.SysUser; +import com.ruoyi.common.utils.MapUtils; +import com.ruoyi.common.utils.SecurityUtils; +import com.ruoyi.common.utils.StringUtils; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.domain.*; +import com.ruoyi.domain.ZfCollection; import com.ruoyi.domain.ZfCollection; import com.ruoyi.mapper.ZfCollectionMapper; +import com.ruoyi.service.ZAuthorityService; +import com.ruoyi.service.ZInfoUserService; import com.ruoyi.service.ZfCollectionService; +import com.ruoyi.util.ArraysUtil; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.web.multipart.MultipartFile; + +import javax.annotation.Resource; +import java.util.*; +import java.util.stream.Collectors; + +import static com.ruoyi.constant.MenuAuthority.*; /** * <p> @@ -16,6 +40,446 @@ * @since 2023-03-12 */ @Service +@Slf4j public class ZfCollectionServiceImpl extends ServiceImpl<ZfCollectionMapper, ZfCollection> implements ZfCollectionService { + @Resource + ZfCollectionService zfCollectionService; + + @Resource + ZInfoUserService zInfoUserService; + + @Resource + ZAuthorityService zAuthorityService; + + @Resource + ZfCollectionMapper zfCollectionMapper; + + private LambdaQueryWrapper<ZfCollection> buildCondition(ZfCollection zfCollection,List<Long> familyIdList) { + LambdaQueryWrapper<ZfCollection> lqw = new LambdaQueryWrapper<>(); + lqw.orderByDesc(ZfCollection::getCreateTime); + lqw.like(StringUtils.isNotEmpty(zfCollection.getType()),ZfCollection::getType,zfCollection.getType()); + lqw.like(StringUtils.isNotEmpty(zfCollection.getName()),ZfCollection::getName,zfCollection.getName()); + lqw.like(StringUtils.isNotEmpty(zfCollection.getSource()),ZfCollection::getSource,zfCollection.getSource()); + lqw.like(StringUtils.isNotEmpty(zfCollection.getOwner()),ZfCollection::getOwner,zfCollection.getOwner()); + lqw.like(StringUtils.isNotEmpty(zfCollection.getPrice()),ZfCollection::getPrice,zfCollection.getPrice()); + lqw.like(StringUtils.isNotEmpty(zfCollection.getLocation()),ZfCollection::getLocation,zfCollection.getLocation()); + lqw.like(StringUtils.isNotEmpty(zfCollection.getRemark()),ZfCollection::getRemark,zfCollection.getRemark()); + lqw.in(ZfCollection::getFamilyId,familyIdList); + lqw.eq(zfCollection.getHappenTime() != null, ZfCollection::getHappenTime, zfCollection.getHappenTime()); + lqw.between(zfCollection.getHappenStartTime() != null && zfCollection.getHappenEndTime() != null, ZfCollection::getHappenTime, zfCollection.getHappenStartTime(), zfCollection.getHappenEndTime()); + return lqw; + } + + private LambdaQueryWrapper<ZfCollection> uniqueCondition(ZfCollection zfCollection) { + LambdaQueryWrapper<ZfCollection> lqw = new LambdaQueryWrapper<>(); + lqw.eq(StringUtils.isNotEmpty(zfCollection.getType()),ZfCollection::getType,zfCollection.getType()); + lqw.eq(StringUtils.isNotEmpty(zfCollection.getName()),ZfCollection::getName,zfCollection.getName()); + lqw.eq(StringUtils.isNotEmpty(zfCollection.getSource()),ZfCollection::getSource,zfCollection.getSource()); + lqw.eq(StringUtils.isNotEmpty(zfCollection.getOwner()),ZfCollection::getOwner,zfCollection.getOwner()); + lqw.eq(StringUtils.isNotEmpty(zfCollection.getPrice()),ZfCollection::getPrice,zfCollection.getPrice()); + lqw.eq(StringUtils.isNotEmpty(zfCollection.getLocation()),ZfCollection::getLocation,zfCollection.getLocation()); + lqw.eq(StringUtils.isNotEmpty(zfCollection.getRemark()),ZfCollection::getRemark,zfCollection.getRemark()); + lqw.eq(zfCollection.getHappenTime() != null, ZfCollection::getHappenTime, zfCollection.getHappenTime()); + lqw.eq(zfCollection.getFamilyId()!=null,ZfCollection::getFamilyId,zfCollection.getFamilyId()); + return lqw; + } + +// private LambdaQueryWrapper<ZfCollection> buildCondition(ZfCollection zfCollection, String familyIds, String secondFamilyAuthority) { +// //妯$硦鏌ヨ鐨勬潯浠� +// LambdaQueryWrapper<ZfCollection> lqw = buildCondition(zfCollection); +// +// //瀹氫箟涓�涓竷灏旀爣璁帮紝鏍囪绗竴瀹跺涵鍙锋槸鍚︽湁閫楀彿 +// boolean flag = false; +// +// StringBuilder secondFamilyIdsBuffer = new StringBuilder(); +// +// //澶勭悊浼犲叆鐨剆econdFamilyAuthority 3{2007 2018 2015},4{2007 2019} +// +// if (StringUtils.isNotEmpty(secondFamilyAuthority)) { +// +// if (secondFamilyAuthority.contains(",")) { +// //閫楀彿闅斿紑寰楀埌濡備笅涓诧細3{2007 2018 2015} +// String[] authorityList = secondFamilyAuthority.split(","); +// for (String authorityAndId : authorityList) { +// setSecondFamilyAuthority(secondFamilyIdsBuffer, authorityAndId); +// } +// +// //鎶婂悗闈㈢殑閫楀彿鍘绘帀 +// if (secondFamilyIdsBuffer.length() > 1) { +// secondFamilyIdsBuffer.deleteCharAt(secondFamilyIdsBuffer.length() - 1); +// } +// +// }else{ +// setSecondFamilyAuthority(secondFamilyIdsBuffer, secondFamilyAuthority); +// //鎶婂悗闈㈢殑閫楀彿鍘绘帀 +// if (secondFamilyIdsBuffer.length() > 1) { +// secondFamilyIdsBuffer.deleteCharAt(secondFamilyIdsBuffer.length() - 1); +// } +// } +// } +// //灏哠tringBuffer杞垚String +// String secondFamilyIds = secondFamilyIdsBuffer.toString(); +// +// //绗竴瀹跺涵鍙风殑鏉′欢 +// if (familyIds.contains(",")) { +// flag = true; +// } +// +// //绗簩瀹跺涵鍙风殑鏉′欢 +// if (StringUtils.isNotEmpty(secondFamilyIds)) { +// if (secondFamilyIds.contains(",")) { +// String[] secondFamilyIdList = secondFamilyIds.split(","); +// if (flag) { +// //濡傛灉绗竴瀹跺涵鍙峰拰绗簩瀹跺涵鍙烽兘鏈夐�楀彿 +// String[] familyList = familyIds.split(","); +// String[] totalFamilyIdList = ArraysUtil.appendToArray(familyList, secondFamilyIdList); +// lqw.in(ZfCollection::getFamilyId, totalFamilyIdList); +// } else { +// //濡傛灉绗竴瀹跺涵鍙锋病鏈夐�楀彿浣嗘槸绗簩瀹跺涵鍙锋湁閫楀彿 +// String[] totalFamilyIdList = ArraysUtil.appendToArray(secondFamilyIdList, familyIds); +// lqw.in(ZfCollection::getFamilyId, totalFamilyIdList); +// } +// +// } else { +// if (flag) { +// //濡傛灉绗竴瀹跺涵鍙锋湁閫楀彿浣嗙浜屽搴彿娌℃湁閫楀彿 +// String[] familyList = familyIds.split(","); +// String[] totalFamilyIdList = ArraysUtil.appendToArray(familyList, secondFamilyIds); +// lqw.in(ZfCollection::getFamilyId, totalFamilyIdList); +// } else { +// //濡傛灉绗竴瀹跺涵鍙峰拰绗簩瀹跺涵鍙烽兘娌℃湁閫楀彿 +// String[] totalFamilyIdList = ArraysUtil.appendToArray(familyIds, secondFamilyIds); +// lqw.in(ZfCollection::getFamilyId, totalFamilyIdList); +// } +// } +// } else { +// //濡傛灉娌℃湁绗簩瀹跺涵鍙� +// if (flag) { +// String[] familyList = familyIds.split(","); +// lqw.in(ZfCollection::getFamilyId, familyList); +// } else { +// lqw.eq(ZfCollection::getFamilyId, familyIds); +// } +// +// } +// +// lqw.orderByDesc(ZfCollection::getCreateTime); +// return lqw; +// } +// +// private void setSecondFamilyAuthority(StringBuilder secondFamilyIdsBuffer, String authorityAndId) { +// //寰楀埌鏉冮檺涓� +// String authorities = authorityAndId.substring(2, authorityAndId.length() - 1); +// +// if (authorities.contains(" ")) { +// //绌烘牸闅斿紑寰楀埌鑿滃崟id锛岀湅鏄惁鏈夊搴旂殑鏉冮檺 +// String[] authorityIdList = authorities.split(" "); +// for (String s : authorityIdList) { +// if (s.equals(COLLECTION_LIST)) { +// secondFamilyIdsBuffer.append(authorityAndId.charAt(0)).append(","); +// break; +// } +// } +// } else { +// if (authorities.equals(COLLECTION_LIST)) { +// secondFamilyIdsBuffer.append(authorityAndId.charAt(0)).append(","); +// } +// } +// } +// +// private ZInfoUser getMySelf() { +// SysUser user = SecurityUtils.getLoginUser().getUser(); +// Long userId = user.getUserId(); +// LambdaQueryWrapper<ZInfoUser> zInfoUserLambdaQueryWrapper = new LambdaQueryWrapper<>(); +// zInfoUserLambdaQueryWrapper.eq(ZInfoUser::getUserId, userId); +// return zInfoUserService.getOne(zInfoUserLambdaQueryWrapper); +// } +// +// private String listFamilyIds() { +// ZInfoUser mySelf = getMySelf(); +// return mySelf.getFamilyId(); +// } +// +// private String listSecondFamilyIds() { +// ZInfoUser mySelf = getMySelf(); +// return mySelf.getSecondFamilyId(); +// } + + @Override + public List<ZfCollection> selectByCondition(ZfCollection zfCollection) { +// String familyIds = listFamilyIds(); +// String secondFamilyIds = listSecondFamilyIds(); +// LambdaQueryWrapper<ZfCollection> lambdaQueryWrapper = buildCondition(zfCollection, familyIds, secondFamilyIds); +// List<ZfCollection> beanRecords = list(lambdaQueryWrapper); +// log.info("浠庢暟鎹簱涓煡鍒扮殑涓�:{}", beanRecords); +// return markOwnData(familyIds, beanRecords); + + //瑕佹煡鑷繁瀹跺涵鐨� + ZInfoUser myself = zInfoUserService.getMyself(); + Long familyId = myself.getFamilyId(); + //涔熻鏌ュ埆浜烘巿鏉冪殑 + List<ZAuthority> authority = zAuthorityService.getAuthority(); + List<Long> idList = authority.stream().filter(auth -> auth.getAuthority().toString().equals(COLLECTION_LIST)).map(ZAuthority::getFid).collect(Collectors.toList()); + //鍔犱笂鑷繁瀹跺涵鐨刬d + idList.add(familyId); + + LambdaQueryWrapper<ZfCollection> lambdaQueryWrapper = buildCondition(zfCollection, idList); + List<ZfCollection> beanRecords = list(lambdaQueryWrapper); + log.info("浠庢暟鎹簱涓煡鍒扮殑涓�:{}", beanRecords); + return markOwnData(familyId, beanRecords); + } + + @Override + public List<ZfCollection> selectByIds(Long[] ids) { + List<ZfCollection> list = new ArrayList<>(); + if(ids.length!=0) + list = listByIds(Arrays.asList(ids)); + else + list = list(); + return list; + } + +// private List<ZfCollection> markOwnData(String familyIds, List<ZfCollection> beanRecords) { +// return beanRecords.stream().peek(record -> { +// String recordFamilyId = record.getFamilyId(); +// if (familyIds.contains(",")) { +// String[] familyIdList = familyIds.split(","); +// for (String familyId : familyIdList) { +// if (familyId.equals(recordFamilyId)) { +// record.setOwnData(1); +// } +// } +// } else { +// if (familyIds.equals(recordFamilyId)) { +// record.setOwnData(1); +// } +// } +// }).collect(Collectors.toList()); +// } + + public List<ZfCollection> markOwnData(Long familyId,List<ZfCollection> beanRecords){ + return beanRecords.stream().peek( + bean -> { + if (bean.getFamilyId() == familyId) { + bean.setOwnData(1); + } else { + bean.setOwnData(0); + } + } + ).sorted((a,b)-> b.getOwnData()-a.getOwnData()).collect(Collectors.toList()); + } + + @Override + public AjaxResult selectDataList(ZfCollection zfCollection, Integer pageNum, Integer pageSize) { +// String familyIds = listFamilyIds(); +// String secondFamilyAuthority = listSecondFamilyIds(); +// LambdaQueryWrapper<ZfCollection> lqw = buildCondition(zfCollection, familyIds, secondFamilyAuthority); +// +// Page<ZfCollection> zfCollectionPage = new Page<>(pageNum, pageSize); +// Page<ZfCollection> pageResult = page(zfCollectionPage, lqw); +// +// List<ZfCollection> beanRecords = pageResult.getRecords();//寰楀埌鏌ヨ鍑烘潵鐨勬暟鎹� +// +// List<ZfCollection> dtoResult = markOwnData(familyIds, beanRecords); +// +// HashMap<String, Object> data = MapUtils.getResult(pageResult, dtoResult); +// return AjaxResult.success(data); + + //瑕佹煡鑷繁瀹跺涵鐨� + ZInfoUser myself = zInfoUserService.getMyself(); + Long familyId = myself.getFamilyId(); + //涔熻鏌ュ埆浜烘巿鏉冪殑 + List<ZAuthority> authority = zAuthorityService.getAuthority(); + List<Long> idList = authority.stream().filter(auth -> auth.getAuthority().toString().equals(COLLECTION_LIST)).map(ZAuthority::getFid).collect(Collectors.toList()); + //鍔犱笂鑷繁瀹跺涵鐨刬d + idList.add(familyId); +// String familyIds = listFamilyIds(); +// String secondFamilyAuthority = listSecondFamilyIds(); + LambdaQueryWrapper<ZfCollection> lqw = buildCondition(zfCollection, idList); + + + Page<ZfCollection> zfCollectionPage = new Page<>(pageNum, pageSize); + Page<ZfCollection> pageResult = page(zfCollectionPage, lqw); + + List<ZfCollection> beanRecords = pageResult.getRecords();//寰楀埌鏌ヨ鍑烘潵鐨勬暟鎹� + + List<ZfCollection> dtoResult = markOwnData(familyId, beanRecords); + + HashMap<String, Object> data = MapUtils.getResult(pageResult, dtoResult); + return AjaxResult.success(data); + } + + +// @Override +// public AjaxResult addData2(ZfCollection zfCollection){ +// ZInfoUser mySelf = getMySelf(); +// String myFamilyId = mySelf.getFamilyId(); +// +// if (StringUtils.isNotEmpty(zfCollection.getFamilyId())){ +// throw new RuntimeException("瀵煎叆鏁版嵁鏃舵偍涓嶈兘鎸囧畾瀹跺涵鍙�"); +// } +// +// if(StringUtils.isEmpty(myFamilyId)){ +// throw new RuntimeException("鎮ㄨ繕鏈姞鍏ヤ换浣曞搴�"); +// } +// +// if (myFamilyId.contains(",")){ +// String[] myFamilyIds = myFamilyId.split(","); +// //榛樿娣诲姞绗竴涓搴殑鏁版嵁 +// zfCollection.setFamilyId(myFamilyIds[0]); +// }else { +// zfCollection.setFamilyId(myFamilyId); +// } +// +// //鍒ゆ柇鏄惁鏈夐噸澶嶆暟鎹� +// LambdaQueryWrapper<ZfCollection> lqw = uniqueCondition(zfCollection); +// List<ZfCollection> list = list(lqw); +// if(list.size()>0){ +// throw new RuntimeException("璇峰嬁鏂板閲嶅鏁版嵁"); +// } +// +// if (save(zfCollection)) { +// return AjaxResult.success(); +// }else { +// return AjaxResult.error(); +// } +// } + + @Override + public AjaxResult addData(ZfCollection zfCollection) { + ZInfoUser myself = zInfoUserService.getMyself(); + Long familyId = myself.getFamilyId(); + + if(familyId == null){ + throw new RuntimeException("鎮ㄨ繕鏈姞鍏ヤ换浣曞搴�"); + } + + List<ZAuthority> authority = zAuthorityService.getAuthority(); + List<Long> familyIdList = authority.stream().filter(auth -> auth.getAuthority().toString().equals(COLLECTION_LIST_ADD)).map(ZAuthority::getFid).collect(Collectors.toList()); + familyIdList.add(familyId); + + if (zfCollection.getFamilyId()!=null && !familyIdList.contains(zfCollection.getFamilyId())) { + throw new RuntimeException("浣犳病鏈夋潈闄愭搷浣滄瀹跺涵鐨勬暟鎹�"); + } + + + if(zfCollection.getFamilyId() == null){ + //榛樿娣诲姞鑷繁瀹跺涵鐨勬暟鎹� + zfCollection.setFamilyId(familyId); + } + + //鍒ゆ柇鏄惁鏈夐噸澶嶆暟鎹� + LambdaQueryWrapper<ZfCollection> lqw = uniqueCondition(zfCollection); + List<ZfCollection> list = list(lqw); + + if(list.size()>0){ + throw new RuntimeException("璇峰嬁鏂板閲嶅鏁版嵁"); + } + + if (save(zfCollection)) { + return AjaxResult.success(); + } else { + return AjaxResult.error(); + } + + } + + @Override + public AjaxResult updateData(ZfCollection zfCollection) { + ZInfoUser myself = zInfoUserService.getMyself(); + Long familyId = myself.getFamilyId(); + + //鍏堟牴鎹甶d鏌ヨ鍑烘暟鎹殑familyId锛岀湅鐪嬫湁娌℃湁鏉冮檺鎿嶄綔 + Long dataFamilyId = getById(zfCollection.getId()).getFamilyId(); + + List<ZAuthority> authority = zAuthorityService.getAuthority(); + List<Long> familyIdList = authority.stream().filter(auth -> auth.getAuthority().toString().equals(COLLECTION_LIST_UPDATE)).map(ZAuthority::getFid).collect(Collectors.toList()); + familyIdList.add(familyId); + + if (dataFamilyId!=null && !familyIdList.contains(dataFamilyId)) { + throw new RuntimeException("浣犳病鏈夋潈闄愭搷浣滄瀹跺涵鐨勬暟鎹�"); + } + + //鍏堣褰曚笅璋佹洿鏂般�佷綍鏃舵洿鏂般�佹洿鏂颁簡鍝噷 + + LambdaQueryWrapper<ZfCollection> lqw = new LambdaQueryWrapper<>(); + lqw.eq(ZfCollection::getId,zfCollection.getId()); + zfCollectionService.getOne(lqw); + ZfCollection oldData = getOne(lqw); + + String oldJson = JSONObject.toJSONString(oldData); + String newJson = JSONObject.toJSONString(zfCollection); + + Map oldMap = JSONObject.parseObject(oldJson, Map.class); + Map newMap = JSONObject.parseObject(newJson, Map.class); + + for (Object key : oldMap.keySet()) { + if(newMap.get(key)!=null && !newMap.get(key).equals(oldMap.get(key))){ + System.out.println(newMap.get(key)+" "+oldMap.get(key)); + Date date = new Date(); + System.out.println("鐢ㄦ埛"+myself.getNickName()+"鍦�"+date+"杩欎釜鏃堕棿"+"淇敼浜�<鏀惰棌鑽h獕>妯″潡鐨�"+key+"瀛楁"); + } + } + + + if(updateById(zfCollection)){ + + return AjaxResult.success(); + }else { + return AjaxResult.error(); + } + } + + @Override + public AjaxResult deleteData(Long[] ids) { + List<ZfCollection> dataList = zfCollectionService.listByIds(Arrays.asList(ids)); + + ZInfoUser myself = zInfoUserService.getMyself(); + Long familyId = myself.getFamilyId(); + + List<ZAuthority> authority = zAuthorityService.getAuthority(); + List<Long> familyIdList = authority.stream().filter(auth -> auth.getAuthority().toString().equals(COLLECTION_LIST_REMOVE)).map(ZAuthority::getFid).collect(Collectors.toList()); + familyIdList.add(familyId); + + for (ZfCollection data : dataList) { + if (!familyIdList.contains(data.getFamilyId())){ + throw new RuntimeException("浣犳病鏈夋潈闄愭搷浣滄瀹跺涵鐨勬暟鎹�"); + } + } + + if (zfCollectionService.removeByIds(Arrays.asList(ids))) { + return AjaxResult.success(); + }else { + return AjaxResult.error(); + } + } + + @Override + public AjaxResult listType() { + List<String> result = zfCollectionMapper.listType(); + return AjaxResult.success(result); + } + + + @Override + @Transactional + public AjaxResult importExcel(MultipartFile file) { + ExcelUtil<ZfCollection> util = new ExcelUtil<>(ZfCollection.class); + List<ZfCollection> dataList = null; + try { + dataList = util.importExcel(file.getInputStream()); + } catch (Exception e) { + throw new RuntimeException(e); + } + log.info("鍑嗗瑕佸鍏ョ殑鏁版嵁鍒楄〃涓猴細{}", dataList); + + for (ZfCollection zfCollection : dataList) { + zfCollectionService.addData(zfCollection); + } + + return AjaxResult.success("瀵煎叆鏁版嵁鎴愬姛"); + + } + } -- Gitblit v1.9.1