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.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;
|
|
/**
|
* 报警规则配置表Service实现
|
* @author 江蹄蹄
|
* @date 2025/09/28 09:01
|
*/
|
@Service
|
public class WarningRuleServiceImpl implements WarningRuleService {
|
|
@Autowired
|
private WarningRuleMapper warningRuleMapper;
|
@Autowired
|
private WarningMapper warningMapper;
|
@Autowired
|
private MemberMapper memberMapper;
|
@Autowired
|
private WarningRuleDetailMapper warningRuleDetailMapper;
|
|
@Override
|
@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(),"请选择正确的报警类型");
|
}
|
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(),"请选择正确的人员信息");
|
}
|
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(),"请选择正确的人员信息!");
|
}
|
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, 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
|
public void delete(WarningRule warningRule) {
|
UpdateWrapper<WarningRule> deleteWrapper = new UpdateWrapper<>(warningRule);
|
warningRuleMapper.delete(deleteWrapper);
|
}
|
|
@Override
|
@Transactional
|
public void deleteByIdInBatch(List<Integer> ids, LoginUserInfo user) {
|
if (CollectionUtils.isEmpty(ids)) {
|
return;
|
}
|
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 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(),"请选择正确的报警类型");
|
}
|
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
|
public void updateByIdInBatch(List<WarningRule> warningRules) {
|
if (CollectionUtils.isEmpty(warningRules)) {
|
return;
|
}
|
for (WarningRule warningRule: warningRules) {
|
this.updateById(warningRule);
|
}
|
}
|
|
@Override
|
public WarningRule findById(Integer 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
|
public WarningRule findOne(WarningRule warningRule) {
|
QueryWrapper<WarningRule> wrapper = new QueryWrapper<>(warningRule);
|
return warningRuleMapper.selectOne(wrapper);
|
}
|
|
@Override
|
public List<WarningRule> findList(WarningRule warningRule) {
|
QueryWrapper<WarningRule> wrapper = new QueryWrapper<>(warningRule);
|
return warningRuleMapper.selectList(wrapper);
|
}
|
|
@Override
|
public PageData<WarningRule> findPage(PageWrap<WarningRule> pageWrap) {
|
IPage<WarningRule> page = new Page<>(pageWrap.getPage(), pageWrap.getCapacity());
|
|
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.eq(WarningRule::getId, pageWrap.getModel().getId());
|
}
|
if (pageWrap.getModel().getCreator() != null) {
|
queryWrapper.eq(WarningRule::getCreator, pageWrap.getModel().getCreator());
|
}
|
if (pageWrap.getModel().getCreateDate() != null) {
|
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.eq(WarningRule::getEditor, pageWrap.getModel().getEditor());
|
}
|
if (pageWrap.getModel().getEditDate() != null) {
|
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.eq(WarningRule::getIsdeleted, pageWrap.getModel().getIsdeleted());
|
}
|
if (pageWrap.getModel().getInfo() != null) {
|
queryWrapper.eq(WarningRule::getInfo, pageWrap.getModel().getInfo());
|
}
|
if (pageWrap.getModel().getMemberIds() != null) {
|
queryWrapper.eq(WarningRule::getMemberIds, pageWrap.getModel().getMemberIds());
|
}
|
if (pageWrap.getModel().getIntervalSec() != null) {
|
queryWrapper.eq(WarningRule::getIntervalSec, pageWrap.getModel().getIntervalSec());
|
}
|
if (pageWrap.getModel().getSortnum() != null) {
|
queryWrapper.eq(WarningRule::getSortnum, pageWrap.getModel().getSortnum());
|
}
|
if (pageWrap.getModel().getStatus() != null) {
|
queryWrapper.eq(WarningRule::getStatus, pageWrap.getModel().getStatus());
|
}
|
if (pageWrap.getModel().getWarningId() != null) {
|
queryWrapper.eq(WarningRule::getWarningId, pageWrap.getModel().getWarningId());
|
}
|
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(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
|
public long count(WarningRule warningRule) {
|
QueryWrapper<WarningRule> wrapper = new QueryWrapper<>(warningRule);
|
return warningRuleMapper.selectCount(wrapper);
|
}
|
}
|