Browse Source
# Conflicts: # epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcVaccineController.javarelease
38 changed files with 549 additions and 211 deletions
@ -0,0 +1,9 @@ |
|||
INSERT INTO `epmet_admin`.`sys_dict_type` (`id`, `dict_type`, `dict_name`, `remark`, `sort`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1518396655261097986', 'item_type_query', '居民信息组件查询方式', '', 18, 0, 0, '1', '2022-04-25 09:09:08', '1', '2022-04-25 09:09:45'); |
|||
INSERT INTO `epmet_admin`.`sys_dict_data` (`id`, `dict_type_id`, `dict_label`, `dict_value`, `dict_p_value`, `remark`, `sort`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1518420223504064513', 1518396655261097986, 'equal', 'cascader', '0', '级联组件', 8, 0, 0, '1', '2022-04-25 10:42:47', '1', '2022-04-25 10:42:47'); |
|||
INSERT INTO `epmet_admin`.`sys_dict_data` (`id`, `dict_type_id`, `dict_label`, `dict_value`, `dict_p_value`, `remark`, `sort`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1518398370672713730', 1518396655261097986, 'list_equal', 'checkbox', '0', '多选框', 6, 0, 0, '1', '2022-04-25 09:15:57', '1', '2022-04-25 09:15:57'); |
|||
INSERT INTO `epmet_admin`.`sys_dict_data` (`id`, `dict_type_id`, `dict_label`, `dict_value`, `dict_p_value`, `remark`, `sort`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1518397686728531969', 1518396655261097986, 'daterange', 'datepicker', '0', '日期', 3, 0, 0, '1', '2022-04-25 09:13:14', '1', '2022-04-25 09:13:14'); |
|||
INSERT INTO `epmet_admin`.`sys_dict_data` (`id`, `dict_type_id`, `dict_label`, `dict_value`, `dict_p_value`, `remark`, `sort`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1518398756393492482', 1518396655261097986, 'daterange', 'daterange', '0', '时间范围组件eg:参战时间', 7, 0, 0, '1', '2022-04-25 09:17:29', '1', '2022-04-25 09:17:29'); |
|||
INSERT INTO `epmet_admin`.`sys_dict_data` (`id`, `dict_type_id`, `dict_label`, `dict_value`, `dict_p_value`, `remark`, `sort`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1518397589986910209', 1518396655261097986, 'like', 'input', '0', '文本输入框', 2, 0, 0, '1', '2022-04-25 09:12:51', '1', '2022-04-25 09:12:51'); |
|||
INSERT INTO `epmet_admin`.`sys_dict_data` (`id`, `dict_type_id`, `dict_label`, `dict_value`, `dict_p_value`, `remark`, `sort`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1518398274627346434', 1518396655261097986, 'equal', 'radio', '0', '单选框', 5, 0, 0, '1', '2022-04-25 09:15:34', '1', '2022-04-25 09:15:34'); |
|||
INSERT INTO `epmet_admin`.`sys_dict_data` (`id`, `dict_type_id`, `dict_label`, `dict_value`, `dict_p_value`, `remark`, `sort`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1518397514623655938', 1518396655261097986, 'equal', 'select', '0', '下拉框', 1, 0, 0, '1', '2022-04-25 09:12:33', '1', '2022-04-25 09:12:33'); |
|||
INSERT INTO `epmet_admin`.`sys_dict_data` (`id`, `dict_type_id`, `dict_label`, `dict_value`, `dict_p_value`, `remark`, `sort`, `DEL_FLAG`, `REVISION`, `CREATED_BY`, `CREATED_TIME`, `UPDATED_BY`, `UPDATED_TIME`) VALUES ('1518397787941281794', 1518396655261097986, 'like', 'textarea', '0', '文本域', 4, 0, 0, '1', '2022-04-25 09:13:38', '1', '2022-04-25 09:13:38'); |
@ -0,0 +1,122 @@ |
|||
package com.epmet.commons.tools.utils.poi.excel.handler; |
|||
|
|||
import com.alibaba.excel.metadata.Head; |
|||
import com.alibaba.excel.metadata.data.WriteCellData; |
|||
import com.alibaba.excel.write.handler.CellWriteHandler; |
|||
import com.alibaba.excel.write.metadata.holder.WriteSheetHolder; |
|||
import com.alibaba.excel.write.metadata.holder.WriteTableHolder; |
|||
import org.apache.poi.ss.usermodel.Cell; |
|||
import org.apache.poi.ss.usermodel.CellType; |
|||
import org.apache.poi.ss.usermodel.Row; |
|||
import org.apache.poi.ss.usermodel.Sheet; |
|||
import org.apache.poi.ss.util.CellRangeAddress; |
|||
|
|||
import java.util.List; |
|||
|
|||
/** |
|||
* desc:单元格合并策略 |
|||
* |
|||
* @author liujianjun |
|||
*/ |
|||
public class ExcelFillCellMergeStrategy implements CellWriteHandler { |
|||
|
|||
/** |
|||
* 需要合并的列 下标 |
|||
*/ |
|||
private int[] mergeColumnIndex; |
|||
/** |
|||
* 从下标n行开始合并 |
|||
*/ |
|||
private int mergeRowIndex; |
|||
|
|||
public ExcelFillCellMergeStrategy() { |
|||
} |
|||
|
|||
public ExcelFillCellMergeStrategy(int mergeRowIndex, int[] mergeColumnIndex) { |
|||
this.mergeRowIndex = mergeRowIndex; |
|||
this.mergeColumnIndex = mergeColumnIndex; |
|||
} |
|||
|
|||
@Override |
|||
public void beforeCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Row row, Head head, Integer columnIndex, Integer relativeRowIndex, Boolean isHead) { |
|||
|
|||
} |
|||
|
|||
@Override |
|||
public void afterCellCreate(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, Cell cell, Head head, Integer relativeRowIndex, Boolean isHead) { |
|||
// 隐藏id列
|
|||
writeSheetHolder.getSheet().setColumnHidden(0, true); |
|||
} |
|||
|
|||
@Override |
|||
public void afterCellDispose(WriteSheetHolder writeSheetHolder, WriteTableHolder writeTableHolder, List<WriteCellData<?>> list, Cell cell, Head head, Integer integer, Boolean aBoolean) { |
|||
int curRowIndex = cell.getRowIndex(); |
|||
int curColIndex = cell.getColumnIndex(); |
|||
if (curRowIndex <= mergeRowIndex) { |
|||
return; |
|||
} |
|||
//如果不指定 合并的列则全部列进行 合并判断
|
|||
if (mergeColumnIndex == null) { |
|||
mergeWithPrevRow(writeSheetHolder, cell, curRowIndex, curColIndex); |
|||
} else { |
|||
//合并指定的列号
|
|||
for (int columnIndex : mergeColumnIndex) { |
|||
if (curColIndex == columnIndex) { |
|||
mergeWithPrevRow(writeSheetHolder, cell, curRowIndex, curColIndex); |
|||
break; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
/** |
|||
* 当前单元格向上合并 |
|||
* |
|||
* @param writeSheetHolder |
|||
* @param cell 当前单元格 |
|||
* @param curRowIndex 当前行 |
|||
* @param curColIndex 当前列 |
|||
*/ |
|||
private void mergeWithPrevRow(WriteSheetHolder writeSheetHolder, Cell cell, int curRowIndex, int curColIndex) { |
|||
// 当前行的第一个Cell
|
|||
Cell curFirstCell = cell.getSheet().getRow(curRowIndex).getCell(0); |
|||
Object curFirstData = curFirstCell.getCellType() == CellType.STRING ? curFirstCell.getStringCellValue() : curFirstCell.getNumericCellValue(); |
|||
// 上一行的第一个Cell
|
|||
Cell preFirstCell = cell.getSheet().getRow(curRowIndex - 1).getCell(0); |
|||
Object preFirstData = preFirstCell.getCellType() == CellType.STRING ? preFirstCell.getStringCellValue() : preFirstCell.getNumericCellValue(); |
|||
|
|||
if (curFirstData.equals(preFirstData)) { |
|||
Object curData = cell.getCellType() == CellType.STRING ? cell.getStringCellValue() : cell.getNumericCellValue(); |
|||
Cell preCell = cell.getSheet().getRow(curRowIndex - 1).getCell(curColIndex); |
|||
Object preData = preCell.getCellType() == CellType.STRING ? preCell.getStringCellValue() : preCell.getNumericCellValue(); |
|||
// 将当前单元格数据与上一个单元格数据比较
|
|||
Boolean dataBool = preData.equals(curData); |
|||
//此处需要注意:因为我是按照序号确定是否需要合并的,所以获取每一行第一列数据和上一行第一列数据进行比较,如果相等合并
|
|||
Boolean bool = cell.getRow().getCell(0).getStringCellValue().equals(cell.getSheet().getRow(curRowIndex - 1).getCell(0).getStringCellValue()); |
|||
|
|||
if (!dataBool || !bool) { |
|||
return; |
|||
} |
|||
Sheet sheet = writeSheetHolder.getSheet(); |
|||
List<CellRangeAddress> mergeRegions = sheet.getMergedRegions(); |
|||
boolean isMerged = false; |
|||
for (int i = 0; i < mergeRegions.size() && !isMerged; i++) { |
|||
CellRangeAddress cellRangeAddr = mergeRegions.get(i); |
|||
// 若上一个单元格已经被合并,则先移出原有的合并单元,再重新添加合并单元
|
|||
if (cellRangeAddr.isInRange(curRowIndex - 1, curColIndex)) { |
|||
sheet.removeMergedRegion(i); |
|||
cellRangeAddr.setLastRow(curRowIndex); |
|||
sheet.addMergedRegion(cellRangeAddr); |
|||
isMerged = true; |
|||
} |
|||
} |
|||
// 若上一个单元格未被合并,则新增合并单元
|
|||
if (!isMerged) { |
|||
CellRangeAddress cellRangeAddress = new CellRangeAddress(curRowIndex - 1, curRowIndex, curColIndex, curColIndex); |
|||
sheet.addMergedRegion(cellRangeAddress); |
|||
} |
|||
|
|||
} |
|||
} |
|||
|
|||
} |
@ -1,4 +1,4 @@ |
|||
package com.epmet.commons.tools.utils.poi.excel; |
|||
package com.epmet.commons.tools.utils.poi.excel.handler; |
|||
|
|||
/** |
|||
* desc:easyExcel 冻结标题 |
@ -0,0 +1,59 @@ |
|||
package com.epmet.dto.result; |
|||
|
|||
import lombok.Data; |
|||
|
|||
import java.io.Serializable; |
|||
|
|||
/** |
|||
* @Description 基础表单项 |
|||
* @Author yinzuomei |
|||
* @Date 2021/10/26 2:15 下午 |
|||
*/ |
|||
@Data |
|||
public class FormItemBaseResult implements Serializable { |
|||
|
|||
private static final long serialVersionUID = 5946318248252730101L; |
|||
/** |
|||
* ID |
|||
*/ |
|||
private String itemId; |
|||
|
|||
|
|||
|
|||
/** |
|||
* 项标签 |
|||
*/ |
|||
private String label; |
|||
|
|||
/** |
|||
* 分组ID,'默认,NONE' |
|||
*/ |
|||
private String itemGroupId; |
|||
|
|||
/** |
|||
* 排序 |
|||
*/ |
|||
private Integer sort; |
|||
|
|||
/** |
|||
* 默认:ic_resi_user |
|||
*/ |
|||
private String tableName; |
|||
|
|||
/** |
|||
* 拼好的列名 |
|||
*/ |
|||
private String columnName; |
|||
|
|||
/** |
|||
* 选项来源,REMOTE;LOCAL;如果是动态加载的下拉框或者CHECKBOX等的情况下使用。URL:接口获取(LABEL,VALUE);JSON:直接从JSON中取 |
|||
*/ |
|||
private String optionSourceType; |
|||
|
|||
/** |
|||
* 来源地址,REMOTE才有,固定格式;如果OPTIONS_SOURCE是URL,则此处填写要调用的接口的URL相对路径,例如:/API/GOV/ORG/XXXX。此处不应设置参数,若需要参数应当完全由后端,通过TOKEN信息来获取 |
|||
*/ |
|||
private String optionSourceValue; |
|||
|
|||
} |
|||
|
@ -0,0 +1,48 @@ |
|||
CREATE TABLE `ic_export_template` ( |
|||
`ID` varchar(64) NOT NULL COMMENT '主键', |
|||
`CUSTOMER_ID` varchar(64) NOT NULL DEFAULT '' COMMENT '客户id', |
|||
`AGENCY_ID` varchar(64) NOT NULL COMMENT '所属机关ID(customer_agency.id)', |
|||
`PIDS` varchar(1024) DEFAULT NULL COMMENT '所有上级组织机构ID(以英文:隔开)包含本身id', |
|||
`FORM_CODE` varchar(32) NOT NULL COMMENT '表ic_form中的CODE', |
|||
`NAME` varchar(64) NOT NULL DEFAULT '' COMMENT '模板名称', |
|||
`SORT` int(11) NOT NULL COMMENT '排序', |
|||
`DEL_FLAG` int(10) NOT NULL COMMENT '0未删除,1已删除', |
|||
`REVISION` int(10) NOT NULL COMMENT '乐观锁', |
|||
`CREATED_BY` varchar(32) NOT NULL COMMENT '创建人', |
|||
`CREATED_TIME` datetime NOT NULL COMMENT '创建时间', |
|||
`UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人', |
|||
`UPDATED_TIME` datetime NOT NULL COMMENT '更新时间', |
|||
PRIMARY KEY (`ID`) |
|||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='自定义表单导出模板'; |
|||
|
|||
CREATE TABLE `ic_export_template_config` ( |
|||
`ID` varchar(64) NOT NULL COMMENT '主键', |
|||
`CUSTOMER_ID` varchar(64) NOT NULL COMMENT '客户id', |
|||
`TEMP_ID` varchar(64) NOT NULL COMMENT '模板主键id', |
|||
`PID` varchar(64) NOT NULL DEFAULT '0' COMMENT '当前表的id', |
|||
`ITEM_ID` varchar(64) NOT NULL DEFAULT '' COMMENT 'ic_form_item.id', |
|||
`WIDTH` int(4) DEFAULT NULL COMMENT '表头宽度', |
|||
`LABEL` varchar(32) NOT NULL COMMENT '项标签', |
|||
`SORT` int(11) NOT NULL COMMENT '排序', |
|||
`DEL_FLAG` int(10) NOT NULL COMMENT '0未删除,1已删除', |
|||
`REVISION` int(10) NOT NULL COMMENT '乐观锁', |
|||
`CREATED_BY` varchar(32) NOT NULL COMMENT '创建人', |
|||
`CREATED_TIME` datetime NOT NULL COMMENT '创建时间', |
|||
`UPDATED_BY` varchar(32) NOT NULL COMMENT '更新人', |
|||
`UPDATED_TIME` datetime NOT NULL COMMENT '更新时间', |
|||
PRIMARY KEY (`ID`) USING BTREE, |
|||
KEY `idx_temp_id` (`TEMP_ID`) USING BTREE COMMENT '模板主键Id' |
|||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='自定义表单导出模板配置项'; |
|||
|
|||
#add 基础信息group |
|||
INSERT INTO ic_form_item_group |
|||
SELECT DISTINCT CONCAT( CUSTOMER_ID, '_0' ) ID, CUSTOMER_ID, `FORM_ID`, `FORM_CODE`, `TABLE_NAME`, `SUPPORT_ADD`, '基础信息' AS `LABEL`, 0 AS `SORT`, 0 AS `DISPLAY`, `DEL_FLAG`, `REVISION`, 'ljj' AS `CREATED_BY`, NOW() CREATED_TIME, 'ljj' AS `UPDATED_BY`, NOW() AS UPDATED_TIME |
|||
FROM ic_form_item_group WHERE DEL_FLAG = '0' |
|||
GROUP BY customer_id; |
|||
|
|||
#更新 0分组为0 groupId |
|||
UPDATE ic_form_item m set m.ITEM_GROUP_ID = CONCAT(m.CUSTOMER_ID,'_',m.ITEM_GROUP_ID) WHERE m.ITEM_GROUP_ID = '0'; |
|||
|
|||
#更新表名 |
|||
UPDATE ic_form_item_group SET TABLE_NAME='ic_resi_user' where (TABLE_NAME='' or TABLE_NAME is null) and DEL_FLAG='0'; |
|||
|
Binary file not shown.
Loading…
Reference in new issue