forked from rongchao/epmet-cloud-rizhao
				
			
			
			
				Browse Source
			
			
			
			
				
		# Conflicts: # epmet-user/epmet-user-server/src/main/java/com/epmet/controller/IcVaccineController.javadev
				 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