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();
}
}