parent
7438069201
commit
1cd26a247a
|
@ -1,14 +1,12 @@
|
|||
package com.hzya.frame.finance.conf.message.controller;
|
||||
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.hzya.frame.finance.conf.billtemplate.entity.FeConfBillTemplateEntity;
|
||||
import com.hzya.frame.finance.conf.message.entity.FeConfMessageTemplateEntity;
|
||||
import com.hzya.frame.finance.conf.message.service.IFeConfMessageTemplateService;
|
||||
import com.hzya.frame.web.entity.JsonResultEntity;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
@ -29,6 +27,7 @@ public class MessageController {
|
|||
PageInfo pageInfo = iFeConfMessageTemplateService.queryMessagePaged(feConfMessageTemplateEntity);
|
||||
return new JsonResultEntity("查询成功",true,pageInfo);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询消息模板
|
||||
*/
|
||||
|
@ -80,7 +79,6 @@ public class MessageController {
|
|||
@RequestMapping(value = "/updateStatus", method = RequestMethod.POST)
|
||||
public JsonResultEntity updateStatus(@RequestBody FeConfMessageTemplateEntity feConfMessageTemplateEntity) throws Exception {
|
||||
FeConfMessageTemplateEntity update = iFeConfMessageTemplateService.updateStatus(feConfMessageTemplateEntity);
|
||||
|
||||
return new JsonResultEntity("修改成功",true,update);
|
||||
}
|
||||
|
||||
|
@ -95,4 +93,16 @@ public class MessageController {
|
|||
iFeConfMessageTemplateService.logicRemove(feConfMessageTemplateEntity);
|
||||
return new JsonResultEntity("删除成功",true,null);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 根据mdm_id和mdm_name查询消息模板
|
||||
*/
|
||||
@PostMapping("/queryTemplate")
|
||||
public JsonResultEntity queryTemplate(@RequestBody FeConfBillTemplateEntity feConfBillTemplateEntity) throws Exception {
|
||||
List<FeConfMessageTemplateEntity> feConfMessageTemplateEntities = iFeConfMessageTemplateService.queryTemplate(feConfBillTemplateEntity);
|
||||
return new JsonResultEntity("查询成功",true,feConfMessageTemplateEntities);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -17,5 +17,8 @@ public interface IFeConfMessageTemplateDao extends IBaseDao<FeConfMessageTemplat
|
|||
|
||||
|
||||
List<FeConfMessageTemplateEntity> page(FeConfMessageTemplateEntity feConfMessageTemplateEntity);
|
||||
|
||||
|
||||
List<FeConfMessageTemplateEntity> queryTemplate(String mdmId, String mdmName);
|
||||
}
|
||||
|
||||
|
|
|
@ -2,7 +2,6 @@ package com.hzya.frame.finance.conf.message.dao.impl;
|
|||
|
||||
import com.hzya.frame.finance.conf.message.entity.FeConfMessageTemplateEntity;
|
||||
import com.hzya.frame.finance.conf.message.dao.IFeConfMessageTemplateDao;
|
||||
import org.apache.ibatis.session.SqlSession;
|
||||
import org.springframework.stereotype.Repository;
|
||||
import com.hzya.frame.basedao.dao.MybatisGenericDao;
|
||||
|
||||
|
@ -35,5 +34,16 @@ public class FeConfMessageTemplateDaoImpl extends MybatisGenericDao<FeConfMessag
|
|||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public List<FeConfMessageTemplateEntity> queryTemplate(String mdmId, String mdmName) {
|
||||
FeConfMessageTemplateEntity feConfMessageTemplateEntity = new FeConfMessageTemplateEntity();
|
||||
feConfMessageTemplateEntity.setMdmId(mdmId);
|
||||
feConfMessageTemplateEntity.setMdmName(mdmName);
|
||||
List<FeConfMessageTemplateEntity> objects = (List<FeConfMessageTemplateEntity>) this.selectList("com.hzya.frame.finance.conf.message.dao.impl.FeConfMessageTemplateDaoImpl.queryTemplate", feConfMessageTemplateEntity);
|
||||
return objects;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -53,6 +53,15 @@
|
|||
,mdm_id
|
||||
,mdm_name
|
||||
</sql>
|
||||
|
||||
|
||||
|
||||
<select id="queryTemplate" resultMap="get-FeConfMessageTemplateEntity-result" parameterType = "com.hzya.frame.finance.conf.message.entity.FeConfMessageTemplateEntity">
|
||||
select *
|
||||
from fe_conf_message_template
|
||||
where mdm_id = #{mdmId}
|
||||
and mdm_name = #{mdmName}
|
||||
</select>
|
||||
<!-- 查询 采用==查询 -->
|
||||
<select id="entity_list_base" resultMap="get-FeConfMessageTemplateEntity-result" parameterType = "com.hzya.frame.finance.conf.message.entity.FeConfMessageTemplateEntity">
|
||||
select
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package com.hzya.frame.finance.conf.message.service;
|
||||
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.hzya.frame.finance.conf.billtemplate.entity.FeConfBillTemplateEntity;
|
||||
import com.hzya.frame.finance.conf.message.entity.FeConfMessageTemplateEntity;
|
||||
import com.hzya.frame.basedao.service.IBaseService;
|
||||
|
||||
|
@ -20,4 +21,8 @@ public interface IFeConfMessageTemplateService extends IBaseService<FeConfMessag
|
|||
void delete(FeConfMessageTemplateEntity feConfMessageTemplateEntity) throws Exception;
|
||||
|
||||
PageInfo queryMessagePaged(FeConfMessageTemplateEntity feConfMessageTemplateEntity);
|
||||
|
||||
|
||||
|
||||
List<FeConfMessageTemplateEntity> queryTemplate(FeConfBillTemplateEntity feConfBillTemplateEntity);
|
||||
}
|
||||
|
|
|
@ -1,13 +1,11 @@
|
|||
package com.hzya.frame.finance.conf.message.service.impl;
|
||||
|
||||
import com.github.pagehelper.Page;
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.hzya.frame.finance.conf.billtemplate.entity.FeConfBillTemplateEntity;
|
||||
import com.hzya.frame.finance.conf.message.entity.FeConfMessageTemplateEntity;
|
||||
import com.hzya.frame.finance.conf.message.dao.IFeConfMessageTemplateDao;
|
||||
import com.hzya.frame.finance.conf.message.service.IFeConfMessageTemplateService;
|
||||
import com.hzya.frame.page.PageAttribute;
|
||||
import org.junit.Assert;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import com.hzya.frame.basedao.service.impl.BaseService;
|
||||
|
@ -50,12 +48,14 @@ public class FeConfMessageTemplateServiceImpl extends BaseService<FeConfMessageT
|
|||
*/
|
||||
@Override
|
||||
public FeConfMessageTemplateEntity updateStatus(FeConfMessageTemplateEntity feConfMessageTemplateEntity) throws Exception {
|
||||
if(feConfMessageTemplateEntity == null){
|
||||
throw new Exception("参数不能为空");
|
||||
}
|
||||
|
||||
if(feConfMessageTemplateEntity.getId() == null){
|
||||
throw new Exception("id不能为空");
|
||||
}
|
||||
List<FeConfMessageTemplateEntity> feConfMessageTemplate = feConfMessageTemplateDao.query(feConfMessageTemplateEntity);
|
||||
if(feConfMessageTemplate == null){
|
||||
throw new Exception("该记录不存在");
|
||||
}
|
||||
if(feConfMessageTemplateEntity.getSts().equals("N")){
|
||||
throw new Exception("该记录已删除,无法修改");
|
||||
}
|
||||
|
@ -91,4 +91,14 @@ public class FeConfMessageTemplateServiceImpl extends BaseService<FeConfMessageT
|
|||
List<FeConfMessageTemplateEntity> query = feConfMessageTemplateDao.page(feConfMessageTemplateEntity);
|
||||
return new PageInfo(query);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@Override
|
||||
public List<FeConfMessageTemplateEntity> queryTemplate(FeConfBillTemplateEntity feConfBillTemplateEntity) {
|
||||
String mdmId = feConfBillTemplateEntity.getId();
|
||||
String mdmName = feConfBillTemplateEntity.getName();
|
||||
return feConfMessageTemplateDao.queryTemplate(mdmId,mdmName);
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
package com.hzya.frame.finance.conf.notificationRules.controller;
|
||||
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.hzya.frame.finance.conf.billtemplate.entity.FeConfBillTemplateEntity;
|
||||
import com.hzya.frame.finance.conf.message.entity.FeConfMessageTemplateEntity;
|
||||
import com.hzya.frame.finance.conf.notificationRules.dao.impl.FeConfNotificationRulesDaoImpl;
|
||||
import com.hzya.frame.finance.conf.notificationRules.entity.BillTypeVO;
|
||||
import com.hzya.frame.finance.conf.notificationRules.entity.FeConfNotificationRulesEntity;
|
||||
import com.hzya.frame.finance.conf.notificationRules.service.IFeConfNotificationRulesService;
|
||||
import com.hzya.frame.web.entity.JsonResultEntity;
|
||||
|
@ -77,4 +79,21 @@ public class NotificationRulesController {
|
|||
return new JsonResultEntity("删除成功",true,null);
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据mdm_id和mdm_name查询通知规则
|
||||
*/
|
||||
@PostMapping("/query")
|
||||
public JsonResultEntity query(@RequestBody FeConfBillTemplateEntity feConfBillTemplateEntity) {
|
||||
List<FeConfNotificationRulesEntity> feConfNotificationRulesEntityList = iFeConfNotificationRulesService.queryFeConfNotificationRulesEntity(feConfBillTemplateEntity);
|
||||
return new JsonResultEntity("查询成功",true,feConfNotificationRulesEntityList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询单据类型列表
|
||||
*/
|
||||
@PostMapping("/queryBillType")
|
||||
public JsonResultEntity queryBillType() {
|
||||
List<BillTypeVO> billTypeVOS = iFeConfNotificationRulesService.queryFeConfBillTypeEntity();
|
||||
return new JsonResultEntity("查询成功",true,billTypeVOS);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.hzya.frame.finance.conf.notificationRules.dao;
|
||||
|
||||
import com.hzya.frame.finance.conf.notificationRules.entity.BillTypeVO;
|
||||
import com.hzya.frame.finance.conf.notificationRules.entity.FeConfNotificationRulesEntity;
|
||||
import com.hzya.frame.basedao.dao.IBaseDao;
|
||||
|
||||
|
@ -18,5 +19,9 @@ public interface IFeConfNotificationRulesDao extends IBaseDao<FeConfNotification
|
|||
FeConfNotificationRulesEntity queryById(String id);
|
||||
|
||||
int updateStatus(FeConfNotificationRulesEntity feConfNotificationRulesEntity);
|
||||
|
||||
List<FeConfNotificationRulesEntity> queryFeConfNotificationRulesEntity(String mdmId, String mdmName);
|
||||
|
||||
List<BillTypeVO> queryFeConfBillTypeEntity();
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package com.hzya.frame.finance.conf.notificationRules.dao.impl;
|
||||
|
||||
import com.hzya.frame.finance.conf.notificationRules.entity.BillTypeVO;
|
||||
import com.hzya.frame.finance.conf.notificationRules.entity.FeConfNotificationRulesEntity;
|
||||
import com.hzya.frame.finance.conf.notificationRules.dao.IFeConfNotificationRulesDao;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
@ -34,6 +35,21 @@ public class FeConfNotificationRulesDaoImpl extends MybatisGenericDao<FeConfNoti
|
|||
return update;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<FeConfNotificationRulesEntity> queryFeConfNotificationRulesEntity(String mdmId, String mdmName) {
|
||||
FeConfNotificationRulesEntity feConfNotificationRulesEntity = new FeConfNotificationRulesEntity();
|
||||
feConfNotificationRulesEntity.setMdmId(mdmId);
|
||||
feConfNotificationRulesEntity.setMdmName(mdmName);
|
||||
List<FeConfNotificationRulesEntity> feConfNotificationRulesEntities = (List<FeConfNotificationRulesEntity>) this.selectList("com.hzya.frame.finance.conf.notificationRules.dao.impl.FeConfNotificationRulesDaoImpl.queryFeConfNotificationRulesEntity", feConfNotificationRulesEntity);
|
||||
return feConfNotificationRulesEntities;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<BillTypeVO> queryFeConfBillTypeEntity() {
|
||||
List<BillTypeVO> billTypeVOs = (List<BillTypeVO>) this.selectList("com.hzya.frame.finance.conf.notificationRules.dao.impl.FeConfNotificationRulesDaoImpl.queryBillType",null);
|
||||
return billTypeVOs;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,14 @@
|
|||
package com.hzya.frame.finance.conf.notificationRules.entity;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
public class BillTypeVO {
|
||||
private String pkBilltypeid;
|
||||
private String pkBilltypecode;
|
||||
private String pkBilltypename;
|
||||
}
|
|
@ -265,8 +265,21 @@
|
|||
and sts='Y'
|
||||
</trim>
|
||||
|
||||
</select>
|
||||
<select id="queryFeConfNotificationRulesEntity" resultMap="get-FeConfNotificationRulesEntity-result" parameterType = "com.hzya.frame.finance.conf.notificationRules.entity.FeConfNotificationRulesEntity">
|
||||
select *
|
||||
from fe_conf_notification_rules
|
||||
where mdm_id = #{mdmId} and mdm_name = #{mdmName}
|
||||
</select>
|
||||
|
||||
|
||||
<select id="queryBillType" resultType="com.hzya.frame.finance.conf.notificationRules.entity.BillTypeVO">
|
||||
select
|
||||
pk_billtypeid as pkBilltypeid,
|
||||
pk_billtypecode as pkBilltypecode,
|
||||
billtypename as pkBilltypename
|
||||
from mdm_bd_bd_billtype
|
||||
</select>
|
||||
<!-- 查询列表 字段采用or格式 -->
|
||||
<select id="FeConfNotificationRulesentity_list_or" resultMap="get-FeConfNotificationRulesEntity-result" parameterType = "com.hzya.frame.finance.conf.notificationRules.entity.FeConfNotificationRulesEntity">
|
||||
select
|
||||
|
@ -396,6 +409,7 @@
|
|||
</trim>
|
||||
)
|
||||
</insert>
|
||||
|
||||
<!-- 批量新增 -->
|
||||
<insert id="entityInsertBatch" keyProperty="id" useGeneratedKeys="true">
|
||||
insert into fe_conf_notification_rules(code, name, mdm_id, mdm_name, pk_billtypeid, pk_billtypecode, pk_billtypename, notification_methodid, notification_methodcode, notification_methodname, notification_strategy, notification_targetid, notification_targetcode, notification_targetname, message_templateid, message_templatecode, message_templatename, enablestate, remark, def1, def2, def3, def4, def5, def6, def7, def8, def9, def10, create_time, create_user, modify_time, modify_user, sts, sts)
|
||||
|
|
|
@ -1,8 +1,13 @@
|
|||
package com.hzya.frame.finance.conf.notificationRules.service;
|
||||
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.hzya.frame.finance.conf.billtemplate.entity.FeConfBillTemplateEntity;
|
||||
import com.hzya.frame.finance.conf.notificationRules.entity.BillTypeVO;
|
||||
import com.hzya.frame.finance.conf.notificationRules.entity.FeConfNotificationRulesEntity;
|
||||
import com.hzya.frame.basedao.service.IBaseService;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 通知规则表(FeConfNotificationRules)表服务接口
|
||||
*
|
||||
|
@ -17,4 +22,8 @@ public interface IFeConfNotificationRulesService extends IBaseService<FeConfNoti
|
|||
FeConfNotificationRulesEntity updateStatus(FeConfNotificationRulesEntity feConfNotificationRulesEntity);
|
||||
|
||||
FeConfNotificationRulesEntity updateFeConfNotificationRulesEntity(FeConfNotificationRulesEntity feConfNotificationRulesEntity) throws Exception;
|
||||
|
||||
List<FeConfNotificationRulesEntity> queryFeConfNotificationRulesEntity(FeConfBillTemplateEntity feConfBillTemplateEntity);
|
||||
|
||||
List<BillTypeVO> queryFeConfBillTypeEntity();
|
||||
}
|
||||
|
|
|
@ -2,6 +2,8 @@ package com.hzya.frame.finance.conf.notificationRules.service.impl;
|
|||
|
||||
import com.github.pagehelper.PageHelper;
|
||||
import com.github.pagehelper.PageInfo;
|
||||
import com.hzya.frame.finance.conf.billtemplate.entity.FeConfBillTemplateEntity;
|
||||
import com.hzya.frame.finance.conf.notificationRules.entity.BillTypeVO;
|
||||
import com.hzya.frame.finance.conf.notificationRules.entity.FeConfNotificationRulesEntity;
|
||||
import com.hzya.frame.finance.conf.notificationRules.dao.IFeConfNotificationRulesDao;
|
||||
import com.hzya.frame.finance.conf.notificationRules.service.IFeConfNotificationRulesService;
|
||||
|
@ -99,4 +101,21 @@ public class FeConfNotificationRulesServiceImpl extends BaseService<FeConfNotifi
|
|||
FeConfNotificationRulesEntity update = feConfNotificationRulesDao.update(feConfNotificationRulesEntity);
|
||||
return update;
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据mdm_id和mdm_name查询通知规则
|
||||
* @param feConfBillTemplateEntity
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<FeConfNotificationRulesEntity> queryFeConfNotificationRulesEntity(FeConfBillTemplateEntity feConfBillTemplateEntity) {
|
||||
String mdmId = feConfBillTemplateEntity.getId();
|
||||
String mdmName = feConfBillTemplateEntity.getName();
|
||||
return feConfNotificationRulesDao.queryFeConfNotificationRulesEntity(mdmId,mdmName);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<BillTypeVO> queryFeConfBillTypeEntity() {
|
||||
return feConfNotificationRulesDao.queryFeConfBillTypeEntity();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -129,9 +129,10 @@ public class ImportExcelController {
|
|||
*/
|
||||
@PostMapping("/importDataTemplate")
|
||||
public JsonResultEntity importExcel(@RequestParam("file") MultipartFile file,@RequestParam("mdmCode") Long mdmCode,@RequestParam("dbName")String dbName) throws IOException {
|
||||
iMdmService.importDataTemplate(file,mdmCode,dbName);
|
||||
iMdmService.importDataTemplateBatch(file,mdmCode,dbName);
|
||||
return new JsonResultEntity("导入模版成功",true,200);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -159,4 +159,13 @@ public interface IMdmService {
|
|||
* @return
|
||||
*/
|
||||
void importDataTemplate(MultipartFile file, Long mdmCode, String dbName);
|
||||
|
||||
/**
|
||||
* 批量导入数据模版
|
||||
* @param file
|
||||
* @param mdmCode
|
||||
* @param dbName
|
||||
* @return
|
||||
*/
|
||||
void importDataTemplateBatch(MultipartFile file, Long mdmCode, String dbName);
|
||||
}
|
||||
|
|
|
@ -74,6 +74,7 @@ import java.io.InputStream;
|
|||
import java.math.BigDecimal;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
||||
/**
|
||||
|
@ -81,6 +82,7 @@ import java.util.*;
|
|||
*/
|
||||
@Service(value = "mdmService")
|
||||
public class MdmServiceImpl implements IMdmService {
|
||||
|
||||
private final Logger logger = LoggerFactory.getLogger(this.getClass());
|
||||
|
||||
@Resource
|
||||
|
@ -128,6 +130,8 @@ public class MdmServiceImpl implements IMdmService {
|
|||
@Value("${zt.url}")
|
||||
private String url;
|
||||
|
||||
// 批量导入数据
|
||||
private static final int BATCH_SIZE = 200;
|
||||
/**
|
||||
* @param object
|
||||
* @return com.hzya.frame.web.entity.JsonResultEntity
|
||||
|
@ -3132,6 +3136,7 @@ public class MdmServiceImpl implements IMdmService {
|
|||
}
|
||||
// 存储动态表头信息
|
||||
List<String> dynamicHeaders = new ArrayList<>();
|
||||
List<Map<String, Object>> batchDataList = new ArrayList<>(BATCH_SIZE);
|
||||
try (InputStream inputStream = file.getInputStream()) {
|
||||
// 使用EasyExcel读取,不指定实体类,用Map接收动态数据
|
||||
EasyExcel.read(inputStream)
|
||||
|
@ -3229,6 +3234,154 @@ public class MdmServiceImpl implements IMdmService {
|
|||
return json;
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量导入数据
|
||||
* @param file
|
||||
* @param mdmCode
|
||||
* @param dbName
|
||||
*/
|
||||
@Override
|
||||
public void importDataTemplateBatch(MultipartFile file, Long mdmCode, String dbName) {
|
||||
// 校验文件合法性
|
||||
if (file == null || file.isEmpty()) {
|
||||
throw new IllegalArgumentException("导入文件不能为空");
|
||||
}
|
||||
// 校验文件格式
|
||||
String fileName = file.getOriginalFilename();
|
||||
if (fileName == null || (!fileName.endsWith(".xlsx") && !fileName.endsWith(".xls"))) {
|
||||
throw new IllegalArgumentException("请上传Excel格式文件(.xlsx或.xls)");
|
||||
}
|
||||
// 存储动态表头信息
|
||||
List<String> dynamicHeaders = new ArrayList<>();
|
||||
// 批量数据缓存
|
||||
List<Map<String, Object>> batchDataList = new ArrayList<>(BATCH_SIZE);
|
||||
|
||||
try (InputStream inputStream = file.getInputStream()) {
|
||||
EasyExcel.read(inputStream)
|
||||
.sheet(0) // 读取第一个sheet
|
||||
.headRowNumber(1) // 表头所在行(从1开始)
|
||||
.autoTrim(true) // 自动去除空格
|
||||
.registerReadListener(new AnalysisEventListener<Map<Integer, Object>>() {
|
||||
// 存储表头索引与字段名的映射关系
|
||||
private Map<Integer, String> headerIndexMap;
|
||||
|
||||
/**
|
||||
* 处理表头信息
|
||||
*/
|
||||
@Override
|
||||
public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
|
||||
this.headerIndexMap = headMap;
|
||||
// 转换为有序的表头列表
|
||||
if (!headMap.isEmpty()) {
|
||||
int maxIndex = headMap.keySet().stream()
|
||||
.mapToInt(Integer::intValue)
|
||||
.max()
|
||||
.orElse(-1);
|
||||
for (int i = 0; i <= maxIndex; i++) {
|
||||
String headerName = headMap.getOrDefault(i, "").trim();
|
||||
dynamicHeaders.add(headerName);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 处理每行数据
|
||||
*/
|
||||
@Override
|
||||
public void invoke(Map<Integer, Object> rowData, AnalysisContext context) {
|
||||
int rowNum = context.readRowHolder().getRowIndex() + 1; // 行号从1开始
|
||||
|
||||
try {
|
||||
// 将索引映射的行数据转换为表头字段映射的Map
|
||||
Map<String, Object> dataMap = convertRowData(rowData, rowNum);
|
||||
batchDataList.add(dataMap);
|
||||
|
||||
// 达到批量阈值时处理
|
||||
if (batchDataList.size() >= BATCH_SIZE) {
|
||||
processBatchData(batchDataList, mdmCode, dbName, rowNum - BATCH_SIZE + 1, rowNum);
|
||||
batchDataList.clear();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("处理第" + rowNum + "行数据失败:" + e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 所有数据解析完成后处理剩余数据
|
||||
*/
|
||||
@Override
|
||||
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
|
||||
if (!batchDataList.isEmpty()) {
|
||||
int startRow = analysisContext.readRowHolder().getRowIndex() - batchDataList.size() + 2;
|
||||
int endRow = analysisContext.readRowHolder().getRowIndex() + 1;
|
||||
processBatchData(batchDataList, mdmCode, dbName, startRow, endRow);
|
||||
batchDataList.clear();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换行数据为字段映射Map
|
||||
*/
|
||||
private Map<String, Object> convertRowData(Map<Integer, Object> rowData, int rowNum) {
|
||||
Map<String, Object> dataMap = new HashMap<>(16);
|
||||
rowData.forEach((index, value) -> {
|
||||
String name = headerIndexMap.getOrDefault(index, "");
|
||||
String headerName = name.contains("/")
|
||||
? name.substring(name.lastIndexOf("/") + 1).trim()
|
||||
: name.trim();
|
||||
|
||||
String cellValue = convertCellValue(value);
|
||||
dataMap.put(headerName, cellValue);
|
||||
});
|
||||
return dataMap;
|
||||
}
|
||||
})
|
||||
.doRead();
|
||||
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException("文件读取失败:" + e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
private void processBatchData(List<Map<String, Object>> batchData, Long mdmCode, String dbName, int i, int rowNum) {
|
||||
List<JSONObject> batchJsonList = batchData.stream()
|
||||
.map(dataMap -> {
|
||||
JSONObject dataObject = new JSONObject();
|
||||
dataObject.put(dbName, dataMap);
|
||||
JSONObject result = new JSONObject();
|
||||
result.put("mdmCode", mdmCode);
|
||||
result.put("data", dataObject);
|
||||
return getStrObj("jsonStr", result);
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
for (JSONObject jsonObject : batchJsonList) {
|
||||
saveMdmShowDetailsData(jsonObject);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 转换单元格值为字符串
|
||||
*/
|
||||
private String convertCellValue(Object value) {
|
||||
if (value == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
if (value instanceof Date) {
|
||||
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
return sdf.format((Date) value);
|
||||
} else if (value instanceof Boolean) {
|
||||
return ((Boolean) value) ? "Y" : "N";
|
||||
} else if (value instanceof Number) {
|
||||
return new BigDecimal(value.toString()).toPlainString();
|
||||
} else {
|
||||
return value.toString().trim();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* @param jsonObject
|
||||
|
|
Loading…
Reference in New Issue