package com.om.service.impl; import cn.hutool.core.bean.BeanUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.om.entity.po.*; import com.om.entity.vo.AppVO; import com.om.entity.vo.DignosisPageVO; import com.om.entity.vo.PcbInfoVO; import com.om.mapper.AppMapper; import com.om.service.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.om.utils.CommonUtil; import com.om.utils.Result; import com.om.utils.UserContext; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; import java.util.ArrayList; import java.util.List; /** *

* 服务实现类 *

* * @author bmmx * @since 2024-03-11 */ @Service @Slf4j public class AppServiceImpl extends ServiceImpl implements IAppService { @Resource private IUserService userService; @Resource private IAppVersionDescribeService describeService; @Resource private IAppsClientsService clientsService; @Override public Result add(AppVO appVO) { App app = new App(); BeanUtil.copyProperties(appVO,app); this.save(app); Integer appId = app.getId(); //appClient for (int i = 0; i < appVO.getClientNums().length; i++) { AppsClients appsClients = new AppsClients(); appsClients.setAppId(appId); appsClients.setClientNum(appVO.getClientNums()[i]); clientsService.save(appsClients); } for (int i = 0; i < appVO.getLanguage().length; i++) { AppVersionDescribe describe = new AppVersionDescribe(); describe.setAppId(appId); describe.setLanguage(appVO.getLanguage()[i]); describe.setDescription(appVO.getDescription()[i]); describeService.save(describe); } return Result.ok(); } @Override public Result delete(Integer id) { removeById(id); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(AppVersionDescribe::getAppId,id); boolean info = describeService.remove(queryWrapper); //还有关联表删除 LambdaQueryWrapper clientsLambdaQueryWrapper = new LambdaQueryWrapper<>(); clientsLambdaQueryWrapper.eq(AppsClients::getAppId,id); clientsService.remove(clientsLambdaQueryWrapper); return Result.ok(); } @Override public Result downloadFile(AppVO app) { return null; } @Override public Result getPageList(Integer pageIndex, Integer pageSize, String username) { Page page = this.lambdaQuery() .like(StringUtils.isNotBlank(username), App::getAdmin, username) .page(new Page<>(pageIndex, pageSize)); List infoList = page.getRecords(); //返回的List集合 List appInfoVOS = new ArrayList<>(); for (int i = 0; i < infoList.size(); i++) { //传输的类型 AppVO appVO = new AppVO(); App appInfo = infoList.get(i); //先copy基本数据 BeanUtil.copyProperties(appInfo,appVO); Integer id = appInfo.getId(); //先取语言和描述信息 LambdaQueryWrapper describeQueryWrapper = new LambdaQueryWrapper<>(); describeQueryWrapper.eq(AppVersionDescribe::getAppId,id); List describeList = describeService.list(describeQueryWrapper); //把取出来的数据存入俩个字符串中 String [] l = new String[describeList.size()]; String [] d = new String[describeList.size()]; for (int i1 = 0; i1 < describeList.size(); i1++) { l[i1] = describeList.get(i1).getLanguage(); d[i1] = describeList.get(i1).getDescription(); } appVO.setDescription(d); appVO.setLanguage(l); //在取出来客户端编号 LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(AppsClients::getAppId,id); List list = clientsService.list(queryWrapper); String [] n = new String[list.size()]; for (int j = 0; j < n.length; j++) { n[j] = list.get(j).getClientNum(); } appVO.setClientNums(n); appInfoVOS.add(appVO); } Page appVOPage = new Page<>(); BeanUtil.copyProperties(page,appVOPage); appVOPage.setRecords(appInfoVOS); return Result.ok(appVOPage); } @Override @Transactional public Result edit(AppVO appVO) { App app = getById(appVO.getId()); LambdaQueryWrapper infoQueryWapper = new LambdaQueryWrapper<>(); infoQueryWapper.eq(App::getId,app.getId()); BeanUtil.copyProperties(appVO,app); this.update(app,infoQueryWapper); //修改客户端id String[] clientNum = appVO.getClientNums(); LambdaQueryWrapper clientQueryWrapper = new LambdaQueryWrapper<>(); clientQueryWrapper.eq(AppsClients::getAppId,appVO.getId()); clientsService.remove(clientQueryWrapper); for (int i = 0; i < clientNum.length; i++) { AppsClients clients = new AppsClients(); clients.setAppId(appVO.getId()); clients.setClientNum(clientNum[i]); log.info("修改之后添加的"); clientsService.save(clients); } //没有进行描述和语言进行修改 String[] language = appVO.getLanguage(); String[] description = appVO.getDescription(); LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(AppVersionDescribe::getAppId,appVO.getId()); describeService.remove(queryWrapper); for (int i = 0; i < language.length; i++) { AppVersionDescribe describe = new AppVersionDescribe(); describe.setAppId(appVO.getId()); describe.setDescription(description[i]); describe.setLanguage(language[i]); describeService.save(describe); } return Result.ok(); } }