From 6e7b6dbd76c9c6356e5846c5bb82a132a3f731db Mon Sep 17 00:00:00 2001 From: doum <doum> Date: 星期一, 29 九月 2025 17:07:20 +0800 Subject: [PATCH] 最新版本541200007 --- server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/WarningRuleServiceImpl.java | 242 ++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 210 insertions(+), 32 deletions(-) diff --git a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/WarningRuleServiceImpl.java b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/WarningRuleServiceImpl.java index 9b713aa..87fe604 100644 --- a/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/WarningRuleServiceImpl.java +++ b/server/visits/dmvisit_service/src/main/java/com/doumee/service/business/impl/WarningRuleServiceImpl.java @@ -1,20 +1,34 @@ package com.doumee.service.business.impl; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.doumee.core.constants.ResponseStatus; +import com.doumee.core.exception.BusinessException; +import com.doumee.core.utils.Constants; +import com.doumee.dao.business.WarningMapper; +import com.doumee.dao.business.WarningRuleDetailMapper; +import com.doumee.dao.business.dao.MemberMapper; +import com.doumee.dao.business.model.*; +import com.doumee.service.business.third.model.LoginUserInfo; import com.doumee.service.business.third.model.PageData; import com.doumee.service.business.third.model.PageWrap; import com.doumee.core.utils.Utils; import com.doumee.dao.business.WarningRuleMapper; -import com.doumee.dao.business.model.WarningRule; import com.doumee.service.business.WarningRuleService; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.github.yulichang.wrapper.MPJLambdaWrapper; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; +import java.util.ArrayList; +import java.util.Date; import java.util.List; +import java.util.Objects; /** * 鎶ヨ瑙勫垯閰嶇疆琛⊿ervice瀹炵幇 @@ -26,16 +40,105 @@ @Autowired private WarningRuleMapper warningRuleMapper; + @Autowired + private WarningMapper warningMapper; + @Autowired + private MemberMapper memberMapper; + @Autowired + private WarningRuleDetailMapper warningRuleDetailMapper; @Override - public Integer create(WarningRule warningRule) { - warningRuleMapper.insert(warningRule); - return warningRule.getId(); + @Transactional + public Integer create(WarningRule warning) { + if(warning.getDetailList() == null + ||warning.getMemberIds() == null + ||warning.getDetailList().size() ==0){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + warning.setStatus(Constants.formatIntegerNum(warning.getStatus())); + warning.setIsdeleted(Constants.ZERO); + warning.setCreator(warning.getLoginUserInfo().getId()); + warning.setCreateDate(new Date()); + warning.setEditDate(warning.getCreateDate()); + warning.setEditor(warning.getCreator()); + String title = ""; + for(WarningRuleDetail detail : warning.getDetailList()){ + if(detail.getWarningId() == null){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + Warning wModel = warningMapper.selectById(detail.getWarningId()); + if(wModel == null || Constants.equalsInteger(wModel.getIsdeleted(),Constants.ONE)){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"璇烽�夋嫨姝g‘鐨勬姤璀︾被鍨�"); + } + if(StringUtils.isNotBlank(detail.getRegionName())){ + title+= detail.getRegionName()+"鍙戠敓"; + } + title += wModel.getName()+"锛� "; + detail.setRuleId(warning.getId()); + detail.setIsdeleted(Constants.ZERO); + detail.setCreator(warning.getLoginUserInfo().getId()); + detail.setCreateDate(new Date()); + detail.setEditDate(warning.getCreateDate()); + detail.setEditor(warning.getCreator()); + } + + warning.setMemberNames( initMemberInfo(warning)); + warning.setTitle(title); + warningRuleMapper.insert(warning); + for(WarningRuleDetail detail : warning.getDetailList()){ + detail.setRuleId(warning.getId()); + } + warningRuleDetailMapper.insert(warning.getDetailList()); + return warning.getId(); + } + + private String initMemberInfo(WarningRule warning) { + String[] members = warning.getMemberIds().split(","); + List<Integer> mIds = new ArrayList<>(); + for(String str :members){ + try { + mIds.add(Integer.parseInt(str)); + }catch (Exception e){ + } + } + if(mIds.size() ==0){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"璇烽�夋嫨姝g‘鐨勪汉鍛樹俊鎭�"); + } + List<Member> memberList = memberMapper.selectJoinList(Member.class,new MPJLambdaWrapper<Member>() + .selectAll(Member.class ) + .selectAs(Company::getName,Member::getCompanyName ) + .leftJoin(Company.class,Company::getId,Member::getCompanyId) + .eq(Member::getIsdeleted,Constants.ZERO ) + .in(Member::getId,mIds )); + if(memberList == null || memberList.size() ==0){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"璇烽�夋嫨姝g‘鐨勪汉鍛樹俊鎭�!"); + } + String memberIds = ""; + String memberNames = ""; + for(Member m : memberList){ + memberIds += (StringUtils.isNotBlank(memberIds)?",":"")+m.getId(); + memberNames += StringUtils.defaultString(m.getName(),"")+"-"+StringUtils.defaultString(m.getCompanyName(),"" )+"; "; + } + warning.setMemberIds(memberIds); + warning.setMemberNames(memberNames); + return memberNames; } @Override - public void deleteById(Integer id) { + public void deleteById(Integer id, LoginUserInfo user) { warningRuleMapper.deleteById(id); + warningRuleMapper.update(null,new UpdateWrapper<WarningRule>().lambda() + .set(WarningRule::getEditor,user.getId()) + .set(WarningRule::getEditDate,new Date()) + .set(WarningRule::getIsdeleted,Constants.ONE) + .eq(WarningRule::getId,id) + ); + warningRuleDetailMapper.update(null,new UpdateWrapper<WarningRuleDetail>().lambda() + .set(WarningRuleDetail::getEditor,user.getId()) + .set(WarningRuleDetail::getEditDate,new Date()) + .set(WarningRuleDetail::getIsdeleted,Constants.ONE) + .eq(WarningRuleDetail::getRuleId,id) + ); } @Override @@ -45,16 +148,64 @@ } @Override - public void deleteByIdInBatch(List<Integer> ids) { + @Transactional + public void deleteByIdInBatch(List<Integer> ids, LoginUserInfo user) { if (CollectionUtils.isEmpty(ids)) { return; } - warningRuleMapper.deleteBatchIds(ids); + warningRuleMapper.update(null,new UpdateWrapper<WarningRule>().lambda() + .set(WarningRule::getEditor,user.getId()) + .set(WarningRule::getEditDate,new Date()) + .set(WarningRule::getIsdeleted,Constants.ONE) + .in(WarningRule::getId,ids) + ); + warningRuleDetailMapper.update(null,new UpdateWrapper<WarningRuleDetail>().lambda() + .set(WarningRuleDetail::getEditor,user.getId()) + .set(WarningRuleDetail::getEditDate,new Date()) + .set(WarningRuleDetail::getIsdeleted,Constants.ONE) + .in(WarningRuleDetail::getRuleId,ids) + ); } @Override - public void updateById(WarningRule warningRule) { - warningRuleMapper.updateById(warningRule); + public void updateById(WarningRule warning) { + if(warning.getDetailList() == null + ||warning.getId() == null + ||warning.getMemberIds() == null + || warning.getDetailList().size() ==0){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + warning.setEditDate(warning.getCreateDate()); + warning.setEditor(warning.getCreator()); + String title = ""; + for(WarningRuleDetail detail : warning.getDetailList()){ + if(detail.getWarningId() == null){ + throw new BusinessException(ResponseStatus.BAD_REQUEST); + } + Warning wModel = warningMapper.selectById(detail.getWarningId()); + if(wModel == null || Constants.equalsInteger(wModel.getIsdeleted(),Constants.ONE)){ + throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"璇烽�夋嫨姝g‘鐨勬姤璀︾被鍨�"); + } + if(StringUtils.isNotBlank(detail.getRegionName())){ + title+= detail.getRegionName()+"鍙戠敓"; + } + title += wModel.getName()+"锛� "; + detail.setRuleId(warning.getId()); + detail.setIsdeleted(Constants.ZERO); + detail.setCreator(warning.getLoginUserInfo().getId()); + detail.setCreateDate(new Date()); + detail.setEditDate(warning.getCreateDate()); + detail.setEditor(warning.getCreator()); + } + warning.setMemberNames( initMemberInfo(warning)); + warning.setTitle(title); + warningRuleMapper.updateById(warning); + for(WarningRuleDetail detail : warning.getDetailList()){ + detail.setRuleId(warning.getId()); + } + warningRuleDetailMapper.delete(new UpdateWrapper<WarningRuleDetail>() + .lambda().eq(WarningRuleDetail::getRuleId,warning.getId())); + warningRuleDetailMapper.insert(warning.getDetailList()); } @Override @@ -69,7 +220,14 @@ @Override public WarningRule findById(Integer id) { - return warningRuleMapper.selectById(id); + WarningRule model =warningRuleMapper.selectById(id); + if(model == null || Constants.equalsInteger(model.getIsdeleted(),Constants.ONE)){ + throw new BusinessException(ResponseStatus.DATA_EMPTY); + } + model.setDetailList(warningRuleDetailMapper.selectList(new LambdaQueryWrapper<WarningRuleDetail>() + .eq(WarningRuleDetail::getIsdeleted,Constants.ZERO) + .eq(WarningRuleDetail::getRuleId,model.getId()))); + return model; } @Override @@ -87,54 +245,74 @@ @Override public PageData<WarningRule> findPage(PageWrap<WarningRule> pageWrap) { IPage<WarningRule> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity()); - QueryWrapper<WarningRule> queryWrapper = new QueryWrapper<>(); + + MPJLambdaWrapper<WarningRule> queryWrapper = new MPJLambdaWrapper<>(); Utils.MP.blankToNull(pageWrap.getModel()); + pageWrap.getModel().setIsdeleted(Constants.ZERO); + queryWrapper.selectAll(WarningRule.class ); + queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getMemberNames()),WarningRule::getMemberNames, pageWrap.getModel().getMemberNames()); + queryWrapper.like(StringUtils.isNotBlank(pageWrap.getModel().getTitle()),WarningRule::getTitle, pageWrap.getModel().getTitle()); + if (pageWrap.getModel().getId() != null) { - queryWrapper.lambda().eq(WarningRule::getId, pageWrap.getModel().getId()); + queryWrapper.eq(WarningRule::getId, pageWrap.getModel().getId()); } if (pageWrap.getModel().getCreator() != null) { - queryWrapper.lambda().eq(WarningRule::getCreator, pageWrap.getModel().getCreator()); + queryWrapper.eq(WarningRule::getCreator, pageWrap.getModel().getCreator()); } if (pageWrap.getModel().getCreateDate() != null) { - queryWrapper.lambda().ge(WarningRule::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate())); - queryWrapper.lambda().le(WarningRule::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate())); + queryWrapper.ge(WarningRule::getCreateDate, Utils.Date.getStart(pageWrap.getModel().getCreateDate())); + queryWrapper.le(WarningRule::getCreateDate, Utils.Date.getEnd(pageWrap.getModel().getCreateDate())); } if (pageWrap.getModel().getEditor() != null) { - queryWrapper.lambda().eq(WarningRule::getEditor, pageWrap.getModel().getEditor()); + queryWrapper.eq(WarningRule::getEditor, pageWrap.getModel().getEditor()); } if (pageWrap.getModel().getEditDate() != null) { - queryWrapper.lambda().ge(WarningRule::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate())); - queryWrapper.lambda().le(WarningRule::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate())); + queryWrapper.ge(WarningRule::getEditDate, Utils.Date.getStart(pageWrap.getModel().getEditDate())); + queryWrapper.le(WarningRule::getEditDate, Utils.Date.getEnd(pageWrap.getModel().getEditDate())); } if (pageWrap.getModel().getIsdeleted() != null) { - queryWrapper.lambda().eq(WarningRule::getIsdeleted, pageWrap.getModel().getIsdeleted()); + queryWrapper.eq(WarningRule::getIsdeleted, pageWrap.getModel().getIsdeleted()); } if (pageWrap.getModel().getInfo() != null) { - queryWrapper.lambda().eq(WarningRule::getInfo, pageWrap.getModel().getInfo()); + queryWrapper.eq(WarningRule::getInfo, pageWrap.getModel().getInfo()); } - if (pageWrap.getModel().getMemberId() != null) { - queryWrapper.lambda().eq(WarningRule::getMemberId, pageWrap.getModel().getMemberId()); + if (pageWrap.getModel().getMemberIds() != null) { + queryWrapper.eq(WarningRule::getMemberIds, pageWrap.getModel().getMemberIds()); } if (pageWrap.getModel().getIntervalSec() != null) { - queryWrapper.lambda().eq(WarningRule::getIntervalSec, pageWrap.getModel().getIntervalSec()); + queryWrapper.eq(WarningRule::getIntervalSec, pageWrap.getModel().getIntervalSec()); } if (pageWrap.getModel().getSortnum() != null) { - queryWrapper.lambda().eq(WarningRule::getSortnum, pageWrap.getModel().getSortnum()); + queryWrapper.eq(WarningRule::getSortnum, pageWrap.getModel().getSortnum()); } if (pageWrap.getModel().getStatus() != null) { - queryWrapper.lambda().eq(WarningRule::getStatus, pageWrap.getModel().getStatus()); + queryWrapper.eq(WarningRule::getStatus, pageWrap.getModel().getStatus()); } if (pageWrap.getModel().getWarningId() != null) { - queryWrapper.lambda().eq(WarningRule::getWarningId, pageWrap.getModel().getWarningId()); + queryWrapper.eq(WarningRule::getWarningId, pageWrap.getModel().getWarningId()); } - for(PageWrap.SortData sortData: pageWrap.getSorts()) { - if (sortData.getDirection().equalsIgnoreCase(PageWrap.DESC)) { - queryWrapper.orderByDesc(sortData.getProperty()); - } else { - queryWrapper.orderByAsc(sortData.getProperty()); + queryWrapper.orderByDesc(WarningRule::getCreateDate); + IPage<WarningRule> result = warningRuleMapper.selectJoinPage(page, WarningRule.class,queryWrapper); + if(result.getRecords()!=null && result.getRecords().size()>0){ + List<WarningRuleDetail> allList = warningRuleDetailMapper.selectList(new LambdaQueryWrapper<WarningRuleDetail>() + .eq(WarningRuleDetail::getIsdeleted,Constants.ZERO)); + for(WarningRule model :result.getRecords()){ + model.setDetailList(getDetailListFromAll(allList,model.getId())); } } - return PageData.from(warningRuleMapper.selectPage(page, queryWrapper)); + return PageData.from(result); + } + + private List<WarningRuleDetail> getDetailListFromAll(List<WarningRuleDetail> allList, Integer id) { + List<WarningRuleDetail> list = new ArrayList<>(); + if(allList!=null && allList.size()>0){ + for(WarningRuleDetail d :allList){ + if(Constants.equalsInteger(d.getRuleId(),id)){ + list.add(d); + } + } + } + return list; } @Override -- Gitblit v1.9.3