Commit 3e160e5d by “zcwang”

add: 平台下载

parent 178ce80b
......@@ -59,7 +59,8 @@
<commonsio.version>2.4</commonsio.version>
<commonscollection.version>4.1</commonscollection.version>
<commons.lang.version>2.4</commons.lang.version>
<des.version>1.0.2-SNAPSHOT</des.version>
<mapstruct.version>1.3.1.Final</mapstruct.version>
</properties>
<!-- 子模块可选依赖 -->
......@@ -443,6 +444,36 @@
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>com.netease.mail.dp</groupId>
<artifactId>des-boot-starter</artifactId>
<version>${des.version}</version>
</dependency>
<!-- mapstruct -->
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>${mapstruct.version}</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-jdk8</artifactId>
<version>${mapstruct.version}</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${mapstruct.version}</version>
</dependency>
<!-- mapStruct 支持 lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-mapstruct-binding</artifactId>
<version>0.2.0</version>
</dependency>
</dependencies>
<repositories>
......
/**
* @(#)ChangeFlowExportCallback.java, 2022/12/8.
* <p/>
* Copyright 2022 Netease, Inc. All rights reserved.
* NETEASE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package com.netease.mail.yanxuan.change.biz.callback;
import java.util.List;
import java.util.stream.Collectors;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.alibaba.fastjson.JSON;
import com.google.common.collect.Lists;
import com.netease.mail.dp.des.process.api.entity.CallbackQueryReq;
import com.netease.mail.dp.des.process.api.entity.ExcelCell;
import com.netease.mail.dp.des.process.api.entity.ExcelTitle;
import com.netease.mail.dp.des.process.api.entity.PivotTable;
import com.netease.mail.dp.des.starter.callback.DesCallbackService;
import com.netease.mail.yanxuan.change.biz.service.ChangeFlowExportQuery;
import com.netease.mail.yanxuan.change.biz.service.change.ChangeTypeService;
import com.netease.mail.yanxuan.change.common.enums.ChangeSubjectEnum;
import com.netease.mail.yanxuan.change.common.util.ExcelUtil;
import com.netease.mail.yanxuan.change.dal.entity.ChangeRecord;
import com.netease.mail.yanxuan.change.dal.entity.ChangeType;
import com.netease.mail.yanxuan.change.dal.mapper.ChangeRecordMapper;
import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowListQueryReq;
import com.netease.mail.yanxuan.change.dal.meta.model.vo.ItemVO;
import com.netease.mail.yanxuan.change.integration.excel.ChangeFlowExcelDTO;
import com.netease.mail.yanxuan.change.integration.excel.ChangeFlowExcelVo;
import lombok.extern.slf4j.Slf4j;
/**
* @Author zcwang
* @Date 2022/12/8
*/
@Slf4j
@Component
public class ChangeFlowExportCallback implements DesCallbackService {
@Autowired
private ChangeRecordMapper changeRecordMapper;
@Autowired
private ChangeTypeService changeTypeService;
@Override
public ExcelTitle queryExcelTitle(CallbackQueryReq req) {
log.info("[op: change flow export callback queryExcelTitle] req={}", JSON.toJSONString(req));
ChangeFlowExportQuery query = JSON.parseObject(req.getParamJson(), ChangeFlowExportQuery.class);
ChangeFlowListQueryReq changeFlowListQueryReq = new ChangeFlowListQueryReq();
BeanUtils.copyProperties(query, changeFlowListQueryReq);
List<ChangeRecord> list = changeRecordMapper.selectByCondition(changeFlowListQueryReq);
ExcelTitle excelTitle = ExcelUtil.fetchExceltile(ChangeFlowExcelVo.class);
excelTitle.setTotal((long) list.size());
log.info("[op: change flow export callback queryExcelTitle] result={}", JSON.toJSONString(excelTitle));
return excelTitle;
}
@Override
public List<List<ExcelCell>> queryExcelData(CallbackQueryReq req) {
log.info("[op: address book export callback queryExcelData] req={}", JSON.toJSONString(req));
ChangeFlowExportQuery query = JSON.parseObject(req.getParamJson(), ChangeFlowExportQuery.class);
List<ChangeFlowExcelDTO> list = getExportList(query);
return list.stream().map(ChangeFlowExcelVo::init).collect(Collectors.toList());
}
private List<ChangeFlowExcelDTO> getExportList(ChangeFlowExportQuery query) {
ChangeFlowListQueryReq changeFlowListQueryReq = new ChangeFlowListQueryReq();
BeanUtils.copyProperties(query, changeFlowListQueryReq);
List<ChangeRecord> changeRecords = changeRecordMapper.selectByCondition(changeFlowListQueryReq);
if (CollectionUtils.isEmpty(changeRecords)) {
return Lists.newArrayList();
}
return changeRecords.stream().map(record -> {
ChangeFlowExcelDTO changeFlowExcelDTO = new ChangeFlowExcelDTO();
changeFlowExcelDTO.setId(record.getId());
changeFlowExcelDTO
.setChangeSubject(ChangeSubjectEnum.getChangeSubjectEnum(record.getChangeSubject()).getDesc());
ChangeType parentChangeType = changeTypeService.getChangeTypeById(record.getParentChangeClassId());
ChangeType sonChangeType = changeTypeService.getChangeTypeById(record.getSonChangeClassId());
changeFlowExcelDTO.setChangeType(parentChangeType.getTypeName() + ">" + sonChangeType.getTypeName());
changeFlowExcelDTO.setChangeDepartment(record.getChangeDepartment());
changeFlowExcelDTO.setChangeContent(record.getChangeContent());
changeFlowExcelDTO.setChangeCommander(record.getChangeCommander());
String changeItemJsonStr = record.getChangeItem();
if (StringUtils.isNotBlank(changeItemJsonStr)) {
List<ItemVO> itemVOS = JSON.parseArray(changeItemJsonStr, ItemVO.class);
changeFlowExcelDTO.setChangeItems(itemVOS.stream().map(item -> item.getItemId() + item.getItemName())
.collect(Collectors.joining(",")));
}
if (StringUtils.isNotBlank(record.getChangeSupplier())) {
changeFlowExcelDTO.setSupplier(record.getChangeSupplier());
}
changeFlowExcelDTO.setChangeState(record.getState());
// todo:变更发起人组织查询:姓名(组织架构三级部门)/供应商ID/system+发起时间
changeFlowExcelDTO.setChangeCreator(record.getCreator());
changeFlowExcelDTO.setExecDepartmentStrList(record.getParticipateChangeExecDepartment());
changeFlowExcelDTO.setCreateTime(record.getCreateTime());
return changeFlowExcelDTO;
}).collect(Collectors.toList());
}
@Override
public PivotTable queryPivotTable(CallbackQueryReq callbackQueryReq) {
return null;
}
}
\ No newline at end of file
......@@ -50,4 +50,7 @@ public class AppConfig {
*/
@Value("${changeManageQM:cuiyixian@corp.netease.com}")
private String changeManageQM;
@Value("${exportLimit:20}")
private Long exportLimit;
}
\ No newline at end of file
/**
* @(#)ExportMapper.java, 2022/12/8.
* <p/>
* Copyright 2022 Netease, Inc. All rights reserved.
* NETEASE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package com.netease.mail.yanxuan.change.biz.convert;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
import com.netease.mail.yanxuan.change.biz.service.ChangeFlowExportQuery;
import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowRequest;
/**
* @Author zcwang
* @Date 2022/12/8
*/
@Mapper
public interface ExportMapper {
ExportMapper INSTANCE = Mappers.getMapper(ExportMapper.class);
ChangeFlowExportQuery convertChangeFlowExport(ChangeFlowRequest req);
}
\ No newline at end of file
/**
* @(#)ChangeFlowExportQuery.java, 2022/12/8.
* <p/>
* Copyright 2022 Netease, Inc. All rights reserved.
* NETEASE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package com.netease.mail.yanxuan.change.biz.service;
import com.netease.mail.yanxuan.change.common.enums.CreateSourceEnum;
import lombok.Data;
/**
* @Author zcwang
* @Date 2022/12/8
*/
@Data
public class ChangeFlowExportQuery {
/**
* 变更商品(变更主体为商品时有效)
*/
private String itemId;
/**
* 变更供应商(变更主体为供应商时有效)
*/
private String supplier;
/**
* 一级变更类型id
*/
private Long parentChangeClassId;
/**
* 二级变更类型id
*/
private Long sonChangeClassId;
/**
* 工单状态
*/
private Integer changeState;
/**
* 变更负责人
*/
private String changeCommander;
/**
* 变更负责部门名
*/
private String changeDepartment;
/**
* 变更行动部门
*/
private String changeExecDepartment;
/**
* 开始时间
*/
private Long startTime;
/**
* 结束时间
*/
private Long endTime;
/**
* 创建端
* @see CreateSourceEnum
*/
private Integer createSource;
/**
* 服务编码 yanxuan-qc-change-flow
*/
protected String serviceCode;
/**
* 登录用户
*/
protected String uid;
}
\ No newline at end of file
/**
* @(#)DESExport.java, 2022/12/8.
* <p/>
* Copyright 2022 Netease, Inc. All rights reserved.
* NETEASE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package com.netease.mail.yanxuan.change.biz.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import com.alibaba.fastjson.JSON;
import com.netease.mail.dp.des.common.api.enums.DataType;
import com.netease.mail.dp.des.common.api.enums.TaskType;
import com.netease.mail.dp.des.common.api.query.CallbackQueryParam;
import com.netease.mail.dp.des.interaction.api.req.TaskReq;
import com.netease.mail.dp.des.starter.client.DesClient;
import com.netease.mail.yanxuan.change.biz.config.AppConfig;
/**
* @Author zcwang
* @Date 2022/12/8
*/
@Component
public class DESExportService {
@Autowired
private DesClient desClient;
@Autowired
private AppConfig appConfig;
public String changeFlowExport(ChangeFlowExportQuery query) {
TaskReq taskReq = new TaskReq();
taskReq.setUserEmail(query.getUid());
taskReq.setProductCode(query.getServiceCode());
taskReq.setFileName("变更管理列表导出");
taskReq.setTaskType(TaskType.BIVARIATE);
taskReq.setDataType(DataType.CALLBACK);
CallbackQueryParam callbackQueryParam = new CallbackQueryParam();
callbackQueryParam.setParamJson(JSON.toJSONString(query));
callbackQueryParam.setCallbackBeanName("changeFlowExportCallback");
callbackQueryParam.setLimit(appConfig.getExportLimit());
taskReq.setCallbackQueryParam(callbackQueryParam);
return desClient.addTask(taskReq);
}
}
\ No newline at end of file
......@@ -7,7 +7,6 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.netease.mail.yanxuan.change.integration.flow.supplier.FlowRpcSupplierInfoService;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
......@@ -15,6 +14,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.Assert;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.netease.mail.yanxuan.change.biz.config.AppConfig;
......@@ -37,6 +37,7 @@ import com.netease.mail.yanxuan.change.dal.meta.model.vo.ItemVO;
import com.netease.mail.yanxuan.change.integration.flow.goods.ItemcenterApiRpcService;
import com.netease.mail.yanxuan.change.integration.flow.goods.PfuApiRpcService;
import com.netease.mail.yanxuan.change.integration.flow.goods.QcApiRpcService;
import com.netease.mail.yanxuan.change.integration.flow.supplier.FlowRpcSupplierInfoService;
import com.netease.mail.yanxuan.change.integration.flow.supplier.FlowRpcSupplierSendService;
import com.netease.mail.yanxuan.change.integration.flow.supplier.req.SupplierRelatedUserReq;
import com.netease.mail.yanxuan.change.integration.flow.supplier.rsp.SupplierUserRsp;
......@@ -120,7 +121,8 @@ public class InteriorChangeConfigServiceImpl implements InteriorChangeConfigServ
* @return
*/
private GoodsResponseRpc queryGoodsCommander(ChangeCommanderEnum commanderEnum,List<Long> goodsInfos,String commander){
if (commanderEnum.getId() != ChangeCommanderEnum.GOODS_ASSOCIATED.getId() || CollectionUtils.isEmpty(goodsInfos) || commander == null){
if (!commanderEnum.getId().equals(ChangeCommanderEnum.GOODS_ASSOCIATED.getId())
|| CollectionUtils.isEmpty(goodsInfos) || commander == null) {
return null;
}
Map<String,GoodsResponseRpc> map = new HashMap<String,GoodsResponseRpc>();
......@@ -318,7 +320,7 @@ public class InteriorChangeConfigServiceImpl implements InteriorChangeConfigServ
return commanderResponse;
case SUPPLIERS_ASSOCIATED:
String changeSupplier = req.getChangeSupplier();
Assert.isTrue(StringUtils.isNotBlank(changeSupplier), "变更负责人为供应商时,商品列表不可为空");
Assert.isTrue(StringUtils.isNotBlank(changeSupplier), "变更负责人为供应商时,供应商不可为空");
try {
GoodsResponseRpc supplierResponseRpc = queryChangeSupplier(changeCommanderEnum,
changeSupplier, changeExecUser);
......
package com.netease.mail.yanxuan.change.biz.service.impl.change;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.netease.mail.yanxuan.change.biz.meta.exception.ExceptionFactory;
import com.netease.mail.yanxuan.change.biz.service.change.ChangeConfigService;
......@@ -104,7 +105,7 @@ public class AdminChangeConfigServiceImpl implements AdminChangeConfigService {
changeConfigVO = getChangeConfigVO(changeConfig, changeTypes, changeExecConfigs);
//如果没有查询后返回redis
getValue().set(CHANGE_CONFIG+id,changeConfigVO,1, TimeUnit.DAYS);
return AjaxResult.success(JSONObject.parseObject(changeConfigVO, ChangeConfigVO.class));
return AjaxResult.success(JSON.parseObject(changeConfigVO, ChangeConfigVO.class));
}
@Override
......
......@@ -20,11 +20,14 @@ import com.alibaba.fastjson.JSON;
import com.netease.mail.yanxuan.change.biz.biz.ChangeFlowBiz;
import com.netease.mail.yanxuan.change.biz.service.ChangeFlowService;
import com.netease.mail.yanxuan.change.biz.service.rpc.FlowService;
import com.netease.mail.yanxuan.change.biz.service.rpc.SupplierSendService;
import com.netease.mail.yanxuan.change.common.bean.CommonConstants;
import com.netease.mail.yanxuan.change.common.enums.ChangeFlowEnum;
import com.netease.mail.yanxuan.change.common.enums.CreateSourceEnum;
import com.netease.mail.yanxuan.change.common.enums.FlowOperationTypeEnum;
import com.netease.mail.yanxuan.change.common.util.DateUtils;
import com.netease.mail.yanxuan.change.dal.entity.ChangeRecord;
import com.netease.mail.yanxuan.change.integration.email.enums.EmailTemplateEnum;
import com.netease.mail.yanxuan.dschedule.core.biz.model.ReturnT;
import com.netease.mail.yanxuan.dschedule.core.handler.IJobHandler;
import com.netease.mail.yanxuan.dschedule.core.handler.annotation.JobHandler;
......@@ -47,6 +50,12 @@ public class AutoSubmit extends IJobHandler {
@Autowired
private FlowService flowService;
@Autowired
private ChangeFlowBiz changeFlowBiz;
@Autowired
private SupplierSendService sendSupplierEmail;
@Override
public ReturnT<String> execute(String... strings) throws Exception {
log.info("AutoSubmit start");
......@@ -100,6 +109,15 @@ public class AutoSubmit extends IJobHandler {
log.debug("[progressRecord] submit error, flowId{}", flowId);
}
}
// todo: 到达执行确认时间,发送邮件
// 发送邮件
HashMap<String, Object> map = new HashMap<>();
map.put("changeId", changeRecord.getId());
map.put("changeSubject", changeRecord.getChangeSubject());
map.put("flowUrl", changeRecord.getFlowId());
changeFlowBiz.qcSendEmail(changeRecord.getChangeCommander(), changeRecord, EmailTemplateEnum.YX_QC_CHANGE_AFFIRM, map);
// 如果是供应商,再次发送供应商邮件
if (changeRecord.getCreateSource().equals(CreateSourceEnum.QC.getType())) {
sendSupplierEmail.sendSupplierEmail(changeRecord, EmailTemplateEnum.YX_QC_CHANGE_AFFIRM, map);
}
}
}
\ No newline at end of file
package com.netease.mail.yanxuan.change.common.anno;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* @author lfmu
*/
@Target(value = { ElementType.TYPE_PARAMETER, ElementType.FIELD })
@Retention(value = RetentionPolicy.RUNTIME)
public @interface ExcelTitleName {
/**
* 表头列名
*/
String title() default "";
/**
* 列数
*/
int order() default -1;
}
/**
* @(#)ExcelUtil.java, 2022/7/5.
* <p/>
* Copyright 2022 Netease, Inc. All rights reserved.
* NETEASE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package com.netease.mail.yanxuan.change.common.util;
import java.io.InputStream;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import org.springframework.web.multipart.MultipartFile;
import com.netease.mail.dp.des.common.api.enums.ExcelCellType;
import com.netease.mail.dp.des.process.api.entity.ExcelCell;
import com.netease.mail.dp.des.process.api.entity.ExcelTitle;
import com.netease.mail.yanxuan.change.common.anno.ExcelTitleName;
import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ImportParams;
/**
* @author ysl (wb.yeshunliang01@mesg.corp.netease.com)
*/
public class ExcelUtil {
private static final List<Field> NULL_FIELDS = Collections.emptyList();
private static Map<Class<?>, List<Field>> annotedFieldMap = new ConcurrentHashMap<>(4);
/**
* 解析excel,转换成list
* @param file
* @param clazz
* @param <T>
* @return
*/
public static <T> List<T> parseExcelList(MultipartFile file, Class<T> clazz) {
List<T> list;
try {
InputStream inputStream = file.getInputStream();
ImportParams importParams = new ImportParams();
list = ExcelImportUtil.importExcel(inputStream, clazz, importParams);
} catch (Exception e) {
throw new IllegalArgumentException("上传的文件错误");
}
return list;
}
public static <T> ExcelTitle fetchExceltile(Class<T> clazz) {
if (clazz == null) {
throw new RuntimeException("clazz参数不能为空");
}
List<Field> sortedFields = fetchAnnotedFields(clazz);
if (sortedFields == NULL_FIELDS) {
throw new RuntimeException("未找到表头字段");
}
ExcelTitle excelTitle = new ExcelTitle();
List<ExcelCell> excelCells = new ArrayList<>();
sortedFields.forEach(field -> {
ExcelCell excelCell = new ExcelCell();
excelCell.setValue(field.getAnnotation(ExcelTitleName.class).title());
excelCell.setCellType(ExcelCellType.NORMAL);
excelCells.add(excelCell);
});
excelTitle.setTitle(excelCells);
return excelTitle;
}
private static <T> List<Field> fetchAnnotedFields(Class<T> clazz) {
if (annotedFieldMap.containsKey(clazz)) {
return annotedFieldMap.get(clazz);
}
Field[] fields = clazz.getDeclaredFields();
Map<Field, ExcelTitleName> fieldMap = new HashMap<>(4);
for (Field field: fields) {
ExcelTitleName column = field.getAnnotation(ExcelTitleName.class);
if (column == null) {
continue;
}
fieldMap.put(field, column);
}
if (fieldMap.isEmpty()) {
annotedFieldMap.put(clazz, NULL_FIELDS);
return NULL_FIELDS;
}
List<Field> fieldList = new ArrayList<>(fieldMap.keySet());
Collections.sort(fieldList, (field1, field2) -> {
ExcelTitleName column1 = fieldMap.get(field1);
ExcelTitleName column2 = fieldMap.get(field2);
return column1.order() - column2.order();
});
annotedFieldMap.put(clazz, fieldList);
return fieldList;
}
}
\ No newline at end of file
......@@ -54,7 +54,7 @@ public class ChangeExecRecord {
private String changeExecUser;
/**
* 变更行动人(不同类型存储不同内容)
* 变更行动人邮箱
*/
private String changeExecUserEmail;
......
......@@ -39,7 +39,7 @@ public class ChangeFlowListQueryReq {
/**
* 工单状态
*/
private Integer state;
private Integer changeState;
/**
* 变更负责人
......
/**
* @(#)ChangeFlowRequest.java, 2022/12/8.
* <p/>
* Copyright 2022 Netease, Inc. All rights reserved.
* NETEASE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package com.netease.mail.yanxuan.change.dal.meta.model.req;
/**
* @Author zcwang
* @Date 2022/12/8
*/
public class ChangeFlowRequest {
private String itemId;
private String supplier;
private Long parentChangeClassId;
private Long sonChangeClassId;
private Integer changeState;
private String changeCommander;
private String changeDepartment;
private String changeExecDepartment;
private Long startTime;
private Long endTime;
}
\ No newline at end of file
......@@ -60,8 +60,8 @@
<if test="sonChangeClassId != null">
and son_change_class_id = #{sonChangeClassId}
</if>
<if test="state != null">
and `state` = #{state}
<if test="changeState != null">
and `state` = #{changeState}
</if>
<if test="changeCommander != null and changeCommander != ''">
and `change_commander` = #{changeCommander}
......
......@@ -11,7 +11,7 @@ public enum EmailTemplateEnum {
YX_QC_CHANGE_RELEASE_FLOW("yxqc_change_release_flow","发起变更","【待处理】%s 变更申请提交 "),
YX_QC_CHANGE_SUBMIT_CANCEL("yx_qc_change_submit_cancel","变更取消","【待处理】%s 变更申请提交 "),
YX_QC_CHANGE_SUBMIT_CANCEL("yx_qc_change_submit_cancel","变更取消","【待处理】%s 变更取消通知"),
YX_QC_CHANGE_SUBMIT_FORWARD("yx_qc_change_submit_forward","变更转交","%s 变更工单转交通知"),
......
......@@ -28,6 +28,7 @@ public class UasClientServiceImpl implements UasClientService {
@Autowired
private EmailRpcService service;
@Override
public void sendEmail(String subject, String content, Collection<String> toList, Collection<String> ccList, List<File> fileList) {
if (!CollectionUtils.isEmpty(toList)) {
Map<String, String> params = new HashMap();
......
/**
* @(#)ChangeFlowExcelVo.java, 2022/12/8.
* <p/>
* Copyright 2022 Netease, Inc. All rights reserved.
* NETEASE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*/
package com.netease.mail.yanxuan.change.integration.excel;
import java.util.ArrayList;
import java.util.List;
import com.netease.mail.dp.des.common.api.enums.ExcelCellType;
import com.netease.mail.dp.des.process.api.entity.ExcelCell;
import com.netease.mail.yanxuan.change.common.anno.ExcelTitleName;
import com.netease.mail.yanxuan.change.common.enums.ChangeStatusEnum;
import com.netease.mail.yanxuan.change.common.enums.ChangeSubjectEnum;
import lombok.Data;
/**
* @Author zcwang
* @Date 2022/12/8
*/
@Data
public class ChangeFlowExcelVo {
/**
* 主键id
*/
@ExcelTitleName(title = "主键id", order = 1)
private Long id;
/**
* 变更主体
* @see ChangeSubjectEnum
*/
@ExcelTitleName(title = "变更主体", order = 2)
private String changeSubject;
/**
* 变更类型,一级类型>二级类型
*/
@ExcelTitleName(title = "变更类型", order = 3)
private String changeType;
/**
* 变更负责部门名
*/
@ExcelTitleName(title = "变更负责部门名", order = 4)
private String changeDepartment;
/**
* 变更内容
*/
@ExcelTitleName(title = "变更内容", order = 5)
private String changeContent;
/**
* 变更负责人
*/
@ExcelTitleName(title = "变更负责人", order = 6)
private String changeCommander;
/**
* 变更商品列表,SPUID+商品名称
*/
@ExcelTitleName(title = "变更商品列表", order = 7)
private String changeItems;
/**
* 变更供应商,仅展示供应商ID,没有时展示为“/”
*/
@ExcelTitleName(title = "变更供应商", order = 8)
private String supplier;
/**
* 变更状态
* @see ChangeStatusEnum
*/
@ExcelTitleName(title = "变更状态", order = 9)
private Integer changeState;
/**
* 变更发起人
*/
@ExcelTitleName(title = "变更发起人", order = 10)
private String changeCreator;
/**
* 变更行动部门列表
*/
@ExcelTitleName(title = "变更行动部门列表", order = 11)
private String execDepartmentStrList;
/**
* 创建时间
*/
@ExcelTitleName(title = "创建时间", order = 12)
private Long createTime;
public static List<ExcelCell> init(ChangeFlowExcelDTO dto) {
List<ExcelCell> cellInfo = new ArrayList<>();
ExcelCell excelCell = new ExcelCell();
excelCell.setCellType(ExcelCellType.TEXT);
// id
excelCell.setValue(dto.getId());
cellInfo.add(excelCell);
// 变更主体
excelCell = new ExcelCell();
excelCell.setValue(dto.getChangeSubject());
cellInfo.add(excelCell);
// 变更类型
excelCell = new ExcelCell();
excelCell.setValue(dto.getChangeType());
cellInfo.add(excelCell);
// 变更负责部门名
excelCell = new ExcelCell();
excelCell.setValue(dto.getChangeDepartment());
cellInfo.add(excelCell);
// 变更内容
excelCell = new ExcelCell();
excelCell.setValue(dto.getChangeContent());
cellInfo.add(excelCell);
// 变更负责人
excelCell = new ExcelCell();
excelCell.setValue(dto.getChangeCommander());
cellInfo.add(excelCell);
// 变更商品列表
excelCell = new ExcelCell();
excelCell.setValue(dto.getChangeItems());
cellInfo.add(excelCell);
// 变更供应商
excelCell = new ExcelCell();
excelCell.setValue(dto.getSupplier());
cellInfo.add(excelCell);
// 变更状态
excelCell = new ExcelCell();
excelCell.setValue(dto.getChangeState());
cellInfo.add(excelCell);
// 变更发起人
excelCell = new ExcelCell();
excelCell.setValue(dto.getChangeCreator());
cellInfo.add(excelCell);
// 变更行动部门列表
excelCell = new ExcelCell();
excelCell.setValue(dto.getExecDepartmentStrList());
cellInfo.add(excelCell);
// 创建时间
excelCell = new ExcelCell();
excelCell.setValue(dto.getCreateTime());
cellInfo.add(excelCell);
return cellInfo;
}
}
\ No newline at end of file
......@@ -12,7 +12,6 @@ import javax.validation.Valid;
import org.apache.logging.log4j.util.Strings;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
......@@ -25,17 +24,22 @@ import com.netease.mail.yanxuan.change.biz.config.TitleConfig;
import com.netease.mail.yanxuan.change.biz.service.ChangeFlowService;
import com.netease.mail.yanxuan.change.biz.service.InteriorChangeConfigService;
import com.netease.mail.yanxuan.change.common.bean.AjaxResult;
import com.netease.mail.yanxuan.change.common.bean.RequestLocalBean;
import com.netease.mail.yanxuan.change.common.enums.CreateSourceEnum;
import com.netease.mail.yanxuan.change.biz.service.ChangeFlowExportQuery;
import com.netease.mail.yanxuan.change.dal.meta.model.po.QueryCommanderEmailReq;
import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowCancelReq;
import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowCreateReq;
import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowDeliverReq;
import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowListQueryReq;
import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowRequest;
import com.netease.mail.yanxuan.change.dal.meta.model.req.ChangeFlowSubmitReq;
import com.netease.mail.yanxuan.change.dal.meta.model.rpc.CommanderResponse;
import com.netease.mail.yanxuan.change.dal.meta.model.vo.BasicChangeFlowVO;
import com.netease.mail.yanxuan.change.dal.meta.model.vo.ChangeFlowListVO;
import com.netease.mail.yanxuan.change.dal.meta.model.vo.ChangeFlowVO;
import com.netease.mail.yanxuan.change.biz.convert.ExportMapper;
import com.netease.mail.yanxuan.change.biz.service.DESExportService;
import com.netease.yanxuan.flowx.sdk.meta.dto.exec.InterfaceInputDTO;
import com.netease.yanxuan.flowx.sdk.meta.dto.exec.UserBaseContainerDTO;
......@@ -50,6 +54,8 @@ import lombok.extern.slf4j.Slf4j;
@RequestMapping("/change/flow")
public class ChangeFlowController {
private static final ExportMapper exportMapper = ExportMapper.INSTANCE;
@Autowired
private ChangeFlowService changeFlowService;
......@@ -59,6 +65,9 @@ public class ChangeFlowController {
@Autowired
private InteriorChangeConfigService interiorChangeConfigService;
@Autowired
private DESExportService desExportService;
/**
* 变更工单详情查询
*
......@@ -93,7 +102,7 @@ public class ChangeFlowController {
changeFlowListQueryReq.setSupplier(supplier);
changeFlowListQueryReq.setParentChangeClassId(parentChangeClassId);
changeFlowListQueryReq.setSonChangeClassId(sonChangeClassId);
changeFlowListQueryReq.setState(changeState);
changeFlowListQueryReq.setChangeState(changeState);
changeFlowListQueryReq.setChangeCommander(changeCommander);
changeFlowListQueryReq.setChangeDepartment(changeDepartment);
changeFlowListQueryReq.setChangeExecDepartment(changeExecDepartment);
......@@ -191,7 +200,7 @@ public class ChangeFlowController {
changeFlowListQueryReq.setSupplier(supplier);
changeFlowListQueryReq.setParentChangeClassId(parentChangeClassId);
changeFlowListQueryReq.setSonChangeClassId(sonChangeClassId);
changeFlowListQueryReq.setState(changeState);
changeFlowListQueryReq.setChangeState(changeState);
changeFlowListQueryReq.setChangeCommander(changeCommander);
changeFlowListQueryReq.setChangeDepartment(changeDepartment);
changeFlowListQueryReq.setChangeExecDepartment(changeExecDepartment);
......@@ -201,6 +210,14 @@ public class ChangeFlowController {
return AjaxResult.success();
}
@GetMapping("/getChangeFlowExport")
public AjaxResult exportAddressBook(ChangeFlowRequest req) {
ChangeFlowExportQuery query = exportMapper.convertChangeFlowExport(req);
query.setUid(RequestLocalBean.getUid());
desExportService.changeFlowExport(query);
return new AjaxResult();
}
/**
* 获取审批人
*
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment