Merge remote-tracking branch 'origin/dev_20230808_OTA' into dev_20230808_OTA

This commit is contained in:
高嵩
2023-08-21 17:27:12 +08:00
8 changed files with 137 additions and 34 deletions
@@ -3,9 +3,11 @@ package com.jero.modules.ota.controller;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.jero.common.api.vo.Result; import com.jero.common.api.vo.Result;
import com.jero.common.aspect.annotation.AutoLog; import com.jero.common.aspect.annotation.AutoLog;
import com.jero.common.system.base.controller.JeroController; import com.jero.common.system.base.controller.JeroController;
import com.jero.common.util.PageUtil;
import com.jero.modules.ota.entity.OtaManageApplyEO; import com.jero.modules.ota.entity.OtaManageApplyEO;
import com.jero.modules.ota.service.IOtaManageApplyEOService; import com.jero.modules.ota.service.IOtaManageApplyEOService;
import com.jero.modules.ota.vo.VersionVO; import com.jero.modules.ota.vo.VersionVO;
@@ -50,8 +52,9 @@ public class OtaManageApplyEOController extends JeroController<OtaManageApplyEO,
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo, @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize) { @RequestParam(name="pageSize", defaultValue="10") Integer pageSize) {
IPage<OtaManageApplyEO> pageList = otaManageApplyEOService.getOtaPage(otaManageApplyEO,pageNo,pageSize); List<OtaManageApplyEO> list = otaManageApplyEOService.getOtaPage(otaManageApplyEO);
return Result.OK(pageList); Page pages = PageUtil.getPages(pageNo, pageSize, list);
return Result.OK(pages);
} }
/** /**
* 分车型列表-分页列表查询 * 分车型列表-分页列表查询
@@ -280,4 +283,17 @@ public class OtaManageApplyEOController extends JeroController<OtaManageApplyEO,
} }
/**
* OTA管理导出excel
*
* @param request
* @param otaManageApplyEO
*/
@RequestMapping(value = "/otaExportXls")
@ApiOperation(value = "OTA管理导出excel", notes = "OTA管理导出excel")
public ModelAndView otaExportXls(HttpServletRequest request, OtaManageApplyEO otaManageApplyEO) {
return otaManageApplyEOService.otaExportXls(request, otaManageApplyEO);
}
} }
@@ -4,7 +4,9 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.jero.modules.ota.entity.OtaManageApplyEO; import com.jero.modules.ota.entity.OtaManageApplyEO;
import com.jero.modules.ota.vo.VersionVO; import com.jero.modules.ota.vo.VersionVO;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -66,11 +68,9 @@ public interface IOtaManageApplyEOService extends IService<OtaManageApplyEO> {
/** /**
* OTA管理列表和全车型列表-分页列表查询 * OTA管理列表和全车型列表-分页列表查询
* @param otaManageApplyEO * @param otaManageApplyEO
* @param pageNo
* @param pageSize
* @return * @return
*/ */
IPage<OtaManageApplyEO> getOtaPage(OtaManageApplyEO otaManageApplyEO,Integer pageNo,Integer pageSize); List<OtaManageApplyEO> getOtaPage(OtaManageApplyEO otaManageApplyEO);
/** /**
* 分车型列表-分页列表查询 * 分车型列表-分页列表查询
@@ -123,4 +123,6 @@ public interface IOtaManageApplyEOService extends IService<OtaManageApplyEO> {
List<OtaManageApplyEO> getVdrListByProject(String projectId, String cut); List<OtaManageApplyEO> getVdrListByProject(String projectId, String cut);
List<OtaManageApplyEO> getStatisticalStatus(String projectId, String plannedBpLaunchBatch, String cut); List<OtaManageApplyEO> getStatisticalStatus(String projectId, String plannedBpLaunchBatch, String cut);
ModelAndView otaExportXls(HttpServletRequest request, OtaManageApplyEO otaManageApplyEO);
} }
@@ -8,6 +8,7 @@ import com.jero.common.constant.enums.CutEnum;
import com.jero.common.system.vo.LoginUser; import com.jero.common.system.vo.LoginUser;
import com.jero.common.util.DateUtils; import com.jero.common.util.DateUtils;
import com.jero.common.util.PageUtil; import com.jero.common.util.PageUtil;
import com.jero.common.util.oConvertUtils;
import com.jero.modules.dummy.enums.OrderEnum; import com.jero.modules.dummy.enums.OrderEnum;
import com.jero.modules.ota.entity.OtaManageApplyEO; import com.jero.modules.ota.entity.OtaManageApplyEO;
import com.jero.modules.ota.entity.OtaManageReceiveNsdpEO; import com.jero.modules.ota.entity.OtaManageReceiveNsdpEO;
@@ -17,6 +18,7 @@ import com.jero.modules.ota.enums.OtaStatusEnum;
import com.jero.modules.ota.mapper.OtaManageApplyEOMapper; import com.jero.modules.ota.mapper.OtaManageApplyEOMapper;
import com.jero.modules.ota.service.IOtaManageApplyEOService; import com.jero.modules.ota.service.IOtaManageApplyEOService;
import com.jero.modules.ota.service.IOtaManageHistoryService; import com.jero.modules.ota.service.IOtaManageHistoryService;
import com.jero.modules.ota.vo.OtaExportVO;
import com.jero.modules.ota.vo.VersionVO; import com.jero.modules.ota.vo.VersionVO;
import com.jero.modules.project.entity.ProjectLibraryBase; import com.jero.modules.project.entity.ProjectLibraryBase;
import com.jero.modules.project.entity.ProjectTaskPlanning; import com.jero.modules.project.entity.ProjectTaskPlanning;
@@ -34,13 +36,32 @@ import com.jero.modules.system.util.StringUtils;
import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.ObjectUtils;
import org.apache.shiro.SecurityUtils; import org.apache.shiro.SecurityUtils;
import org.jeecgframework.poi.excel.def.NormalExcelConstants;
import org.jeecgframework.poi.excel.entity.ExportParams;
import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import java.text.Collator; import java.text.Collator;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
@@ -69,6 +90,9 @@ public class OtaManageApplyEOServiceImpl extends ServiceImpl<OtaManageApplyEOMap
@Autowired @Autowired
private IOtaManageHistoryService otaManageHistoryService; private IOtaManageHistoryService otaManageHistoryService;
@Value(value = "${jero.path.upload}")
private String upLoadPath;
private static SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); private static SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
private static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd"); private static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
@@ -151,12 +175,10 @@ public class OtaManageApplyEOServiceImpl extends ServiceImpl<OtaManageApplyEOMap
/** /**
* OTA管理列表和全车型列表-分页列表查询 * OTA管理列表和全车型列表-分页列表查询
* @param otaManageApplyEO * @param otaManageApplyEO
* @param pageNo
* @param pageSize
* @return * @return
*/ */
@Override @Override
public IPage<OtaManageApplyEO> getOtaPage(OtaManageApplyEO otaManageApplyEO, Integer pageNo, Integer pageSize) { public List<OtaManageApplyEO> getOtaPage(OtaManageApplyEO otaManageApplyEO) {
List<OtaManageApplyEO> otaManageApplyEOList = otaManageApplyEOMapper.getOtaList(otaManageApplyEO); List<OtaManageApplyEO> otaManageApplyEOList = otaManageApplyEOMapper.getOtaList(otaManageApplyEO);
if(!otaManageApplyEOList.isEmpty()){ if(!otaManageApplyEOList.isEmpty()){
List<String> otaNameList = OtaCarEnum.getOtaNameList(); List<String> otaNameList = OtaCarEnum.getOtaNameList();
@@ -223,8 +245,7 @@ public class OtaManageApplyEOServiceImpl extends ServiceImpl<OtaManageApplyEOMap
//表头排序 //表头排序
heartSort(otaManageApplyEO, otaManageApplyEOList); heartSort(otaManageApplyEO, otaManageApplyEOList);
} }
Page pages = PageUtil.getPages(pageNo, pageSize, otaManageApplyEOList); return otaManageApplyEOList;
return pages;
} }
private void heartSort(OtaManageApplyEO otaManageApplyEO, List<OtaManageApplyEO> otaManageApplyEOList) { private void heartSort(OtaManageApplyEO otaManageApplyEO, List<OtaManageApplyEO> otaManageApplyEOList) {
@@ -1060,5 +1081,40 @@ public class OtaManageApplyEOServiceImpl extends ServiceImpl<OtaManageApplyEOMap
return this.list(queryWrapper); return this.list(queryWrapper);
} }
@Override
public ModelAndView otaExportXls(HttpServletRequest request, OtaManageApplyEO otaManageApplyEO) {
LoginUser sysUser = (LoginUser) SecurityUtils.getSubject().getPrincipal();
// Step.2 获取导出数据
List<OtaManageApplyEO> pageList = getOtaPage(otaManageApplyEO);
List<OtaManageApplyEO> exportList = null;
// 过滤选中数据
String selections = request.getParameter("selections");
if (oConvertUtils.isNotEmpty(selections)) {
List<String> selectionList = Arrays.asList(selections.split(","));
exportList = pageList.stream().filter(e -> selectionList.contains(e.getId())).collect(Collectors.toList());
} else {
exportList = pageList;
}
List<OtaExportVO> dataList = new ArrayList<>();
for (OtaManageApplyEO manageApplyEO : exportList) {
OtaExportVO otaExportVO = new OtaExportVO();
BeanUtils.copyProperties(manageApplyEO, otaExportVO);
dataList.add(otaExportVO);
}
// Step.3 AutoPoi 导出Excel
ModelAndView mv = new ModelAndView(new JeecgEntityExcelView());
mv.addObject(NormalExcelConstants.FILE_NAME, "OTA列表"); //此处设置的filename无效 ,前端会重更新设置一下
mv.addObject(NormalExcelConstants.CLASS, OtaExportVO.class);
ExportParams exportParams=new ExportParams("OTA软件版本", null, "OTA软件版本");
mv.addObject(NormalExcelConstants.PARAMS,exportParams);
mv.addObject(NormalExcelConstants.DATA_LIST, dataList);
return mv;
}
} }
@@ -0,0 +1,34 @@
package com.jero.modules.ota.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.jeecgframework.poi.excel.annotation.Excel;
import java.util.Date;
/**
* @description
* @date 2023/8/9 11:28
* @auth zhn
*/
@Data
public class OtaExportVO {
@Excel(name = "软件版本", width = 15)
@ApiModelProperty(value = "软件版本")
private java.lang.String plannedBpLaunchBatch;
@Excel(name = "市场", width = 15)
@ApiModelProperty(value = "市场")
private java.lang.String market;
@Excel(name = "适用车型", width = 50)
@ApiModelProperty(value = "适用车型")
private java.lang.String appliedVehicleProject;
@Excel(name = "软件发布时间", width = 15)
@ApiModelProperty(value = "软件发布时间")
private String releaseName;
}
+1
View File
@@ -1950,4 +1950,5 @@ module.exports = {
lock:'lock', lock:'lock',
datacannotbeedited:'This data cannot be edited', datacannotbeedited:'This data cannot be edited',
Rematchornot:'Rematch or not', Rematchornot:'Rematch or not',
Modifyremarks:'Modify remarks',
} }
+1
View File
@@ -3906,4 +3906,5 @@ module.exports = {
lock:'锁定', lock:'锁定',
datacannotbeedited:'该数据不能进行编辑', datacannotbeedited:'该数据不能进行编辑',
Rematchornot:'是否重新匹配', Rematchornot:'是否重新匹配',
Modifyremarks:'修改备注',
} }
@@ -103,61 +103,55 @@
</div> </div>
<!-- 全部导出--> <!-- 全部导出-->
<div class="table-operator" style='margin-bottom: 19px;text-align: left;margin-top: 20px;'> <div class="table-operator" style='margin-bottom: 19px;text-align: left;margin-top: 20px;'>
<div v-if="vehicleTypeCode == '全部'" class="operator-text" @click="handleExportManage('all')" <div v-if="vehicleTypeCode === '全部'" class="operator-text" @click="handleExportManage('all')"
v-has="'otadetail:export'"> v-has="'otadetail:export'">
<a-icon type="export" :rotate="-90" /> <a-icon type="export" :rotate="-90" />
{{ $t('export') }} {{ $t('export') }}
</div> </div>
<!-- 全部下发通知--> <!-- 全部下发通知-->
<div v-if="vehicleTypeCode == '全部'" class="operator-text" @click="issuenotice" <div v-if="vehicleTypeCode === '全部'" class="operator-text" @click="issuenotice"
v-has="'otadetail:Issuenotice'"> v-has="'otadetail:Issuenotice'">
<a-icon type="sound" /> <a-icon type="sound" />
{{ $t('issuenotice') }} {{ $t('issuenotice') }}
</div> </div>
<!-- studio导出--> <!-- studio导出-->
<div v-if="vehicleTypeCode != '全部'" class="operator-text" @click="handleExportManage('studio')" <div v-if="vehicleTypeCode !== '全部'" class="operator-text" @click="handleExportManage('studio')"
v-has="'otad:export'"> v-has="'otad:export'">
<a-icon type="export" :rotate="-90"/> <a-icon type="export" :rotate="-90"/>
{{ $t('export') }} {{ $t('export') }}
</div> </div>
<!-- studio批量设置--> <!-- studio批量设置-->
<div v-if="vehicleTypeCode != '全部'" class="operator-text" @click="BatchSetting" <div v-if="vehicleTypeCode !== '全部'" class="operator-text" @click="BatchSetting"
v-has="'otad:batchsetting'"> v-has="'otad:batchsetting'">
<a-icon type="setting" /> <a-icon type="setting" />
{{ $t('BatchSetting') }} {{ $t('BatchSetting') }}
</div> </div>
<!-- studio申请重新匹配--> <!-- studio申请重新匹配-->
<div v-if="vehicleTypeCode != '全部'" class="operator-text" @click="applyforrematch" <div v-if="vehicleTypeCode !== '全部'" class="operator-text" @click="applyforrematch"
v-has="'otad:rematch'"> v-has="'otad:rematch'">
<a-icon type="rollback" /> <a-icon type="rollback" />
{{ $t('applyforrematch') }} {{ $t('applyforrematch') }}
</div> </div>
<!-- studio保存--> <!-- studio保存-->
<div v-if="vehicleTypeCode != '全部'" class="operator-text" @click="preservation" <div v-if="vehicleTypeCode !== '全部'" class="operator-text" @click="preservation"
v-has="'otad:save'"> v-has="'otad:save'">
<a-icon type="check-circle" /> <a-icon type="check-circle" />
{{ $t('preservation') }} {{ $t('preservation') }}
</div> </div>
<!-- studio提交--> <!-- studio提交-->
<div v-if="vehicleTypeCode != '全部'" class="operator-text" @click="submit" <div v-if="vehicleTypeCode !== '全部'" class="operator-text" @click="submit"
v-has="'otad-submit'"> v-has="'otad-submit'">
<a-icon type="check-circle" /> <a-icon type="check-circle" />
{{ $t('submit') }} {{ $t('submit') }}
</div> </div>
<!-- manger导出-->
<!-- <div v-if="vehicleTypeCode != '全部'" class="operator-text" @click="handleExportManage('manger')"-->
<!-- v-has="'otaman:export'">-->
<!-- <a-icon type="export" :rotate="-90"/>-->
<!-- {{ $t('export') }}-->
<!-- </div>-->
<!-- manger确认--> <!-- manger确认-->
<div v-if="vehicleTypeCode != '全部'" class="operator-text" @click="confirm" <div v-if="vehicleTypeCode !== '全部'" class="operator-text" @click="confirm"
v-has="'otaman:confirm'"> v-has="'otaman:confirm'">
<a-icon type="check-circle" /> <a-icon type="check-circle" />
{{ $t('confirm') }} {{ $t('confirm') }}
</div> </div>
<!-- manger退回--> <!-- manger退回-->
<div v-if="vehicleTypeCode != '全部'" class="operator-text" @click="sendBack" <div v-if="vehicleTypeCode !== '全部'" class="operator-text" @click="sendBack"
v-has="'otaman:return'"> v-has="'otaman:return'">
<a-icon type="rollback" /> <a-icon type="rollback" />
{{ $t('sendBack') }} {{ $t('sendBack') }}
@@ -1016,24 +1010,23 @@ export default {
// console.log('menuId',this.menuId) // console.log('menuId',this.menuId)
let dateName = moment(new Date()).format('YYYYMMDD') let dateName = moment(new Date()).format('YYYYMMDD')
let name = '' let name = ''
let url = ''
switch (code){ switch (code){
case 'all': case 'all':
name = this.softwareversion; url = 'ota/otaManageApplyEO/allCarExportXls'
break; break;
case 'studio': case 'studio':
name = this.softwareversion; url = 'ota/otaManageApplyEO/oneCarExportXls'
break;
case 'manger':
name = this.softwareversion;
break; break;
} }
let exportName = name + ' ' + dateName + '.xlsx' let exportName = name + ' ' + dateName + '.xlsx'
let query = { let query = {
exportName: exportName, exportName: exportName,
idList: this.selectedRowKeys.join(','), selections: this.selectedRowKeys.join(','),
...this.queryParam
} }
downloadFile('split/sarFileSplitItems/exportSplitInfoZip', exportName, query, this.selectClear) downloadFile(url, exportName, query, this.selectClear)
}, },
// 下发通知 // 下发通知
issuenotice(){ issuenotice(){
@@ -1,7 +1,7 @@
<!--批量设置--> <!--批量设置-->
<template> <template>
<a-modal <a-modal
:title="$t('BatchSetting')" :title="$t('Modifyremarks')"
:width="600" :width="600"
:visible="visible" :visible="visible"
:confirm-loading="confirmLoading" :confirm-loading="confirmLoading"