package com.gk.firework.Service.ServiceImpl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.OrderItem; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.gk.firework.Domain.ControlPrintParam; import com.gk.firework.Domain.Exception.BusinessException; import com.gk.firework.Domain.UserInfo; import com.gk.firework.Domain.Utils.PageInfo; import com.gk.firework.Domain.Utils.StringUtils; import com.gk.firework.Mapper.ControlPrintParamMapper; import com.gk.firework.Service.ControlPrintParamService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; @Service public class ControlPrintParamServiceImpl extends ServiceImpl implements ControlPrintParamService { @Autowired ControlPrintParamMapper controlPrintParamMapper; private static final String defaultSettingsOwner = "admin"; //内包装设置 private static final byte inner = 1; //外包装设置 private static final byte outer = 2; @Override public ControlPrintParam getParamsByUser(UserInfo userInfo, byte type) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(ControlPrintParam::getOwner,userInfo.getUsername()); wrapper.eq(ControlPrintParam::getType,type); ControlPrintParam controlPrintParam = baseMapper.selectOne(wrapper); if (controlPrintParam == null){ wrapper = new LambdaQueryWrapper<>(); wrapper.eq(ControlPrintParam::getOwner,"admin"); wrapper.eq(ControlPrintParam::getType,type); } return baseMapper.selectOne(wrapper); } @Override public void selectDataGrid(PageInfo pageInfo) { Page page = new Page<>(pageInfo.getPageIndex(), pageInfo.getPageSize()); List orderItems = new ArrayList<>(); OrderItem orderItem = new OrderItem(); if (StringUtils.isNotBlank(pageInfo.getSort()) && StringUtils.isNotBlank(pageInfo.getOrder())) { orderItem.setAsc(pageInfo.getOrder().equalsIgnoreCase("ascending")); orderItem.setColumn(pageInfo.getSort()); }else { orderItem.setAsc(false); orderItem.setColumn("id"); } orderItems.add(orderItem); page.setOrders(orderItems); List res = controlPrintParamMapper.selectDataGrid(page,pageInfo.getCondition()); //没有配置就返回默认配置 List settings = new ArrayList<>(res); boolean flag = pageInfo.getCondition().get("enterprisename") == null && pageInfo.getCondition().get("type") == null; //默认内包装 if (flag && settings.stream().filter(item -> item.getType() == inner).count() < 1) { settings.addAll(this.selectDefaultSettings(inner,defaultSettingsOwner)); page.setTotal(page.getTotal() + 1); } //默认外包装 if (flag && settings.stream().filter(item -> item.getType() == outer).count() < 1) { settings.addAll(this.selectDefaultSettings(outer,defaultSettingsOwner)); page.setTotal(page.getTotal() + 1); } pageInfo.setResult(settings); pageInfo.setTotalCount(page.getTotal()); } /** * @Description: 获取内外包装默认设置,owner为admin * @param type 类型 null 查询所有 * @date 2022/2/9 16:32 */ @Override public List selectDefaultSettings(Byte type,String owner) { return controlPrintParamMapper.selectList( new LambdaQueryWrapper() .eq(ControlPrintParam::getOwner, owner) .eq(ControlPrintParam::getType,type)); } /** * @Description: 查找自己的type方案 * @date 2022/2/11 14:02 */ @Override public ControlPrintParam getOwnSelectType(Byte type, UserInfo user) { if (type == null) throw new BusinessException("参数不能为空"); List ownType = this.selectDefaultSettings(type, user.getUsername()); if (ownType.size() > 1) throw new BusinessException("配置重复,请检查数据"); //没有配置返回默认配置 ControlPrintParam param = new ControlPrintParam(); param.setType(type); if (ownType.size() == 0) { List defaultSettings = this.selectDefaultSettings(type, defaultSettingsOwner); if (defaultSettings.size() > 0) param = defaultSettings.get(0); } if (ownType.size() == 1) { param = ownType.get(0); } return param; } /** * @Description: 新增配置方案 * @date 2022/2/11 16:17 */ @Override public void addOrUpdateControlParams(ControlPrintParam controlPrintParam,UserInfo userInfo) { Long id = controlPrintParam.getId(); if (id == null) { controlPrintParam.setOwner(userInfo.getUsername()); this.save(controlPrintParam); } else{ if (userInfo.getUsername().equals(controlPrintParam.getOwner())) { this.updateById(controlPrintParam); }else{ if (userInfo.getType() != 1) controlPrintParam.setOwner(userInfo.getUsername()); this.save(controlPrintParam); } } } /** * @Description: 更新配置方案 * @date 2022/2/11 17:30 */ @Override public void updateControlParams(ControlPrintParam controlPrintParam, UserInfo user) { Long id = controlPrintParam.getId(); if (id == null) throw new BusinessException("参数不能为空"); controlPrintParam.setOwner(null); controlPrintParam.setType(null); this.updateById(controlPrintParam); } }