bug修改

This commit is contained in:
lSun 2025-06-05 16:42:27 +08:00
parent ba169625aa
commit 279e5837cd
10 changed files with 133 additions and 39 deletions

View File

@ -346,6 +346,12 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
} }
} }
public static String getDates(Double dateValue) {
Date date = org.apache.poi.ss.usermodel.DateUtil.getJavaDate(dateValue);
return new SimpleDateFormat("yyyy/MM/dd").format(date);
}
/** /**
* 时间类型转换 * 时间类型转换
*/ */

View File

@ -315,13 +315,32 @@ public class ExcelUtil<T>
} }
else if (Date.class == fieldType) else if (Date.class == fieldType)
{ {
// if (val instanceof String)
// {
// val = DateUtils.parseDate(val);
// }
// else if (val instanceof Double)
// {
// val = DateUtil.getJavaDate((Double) val);
// }
if (val instanceof String) if (val instanceof String)
{ {
val = DateUtils.parseDate(val); // 如果是字符串按指定格式转成 Date
String dateFormat = field.getAnnotation(Excel.class).dateFormat();
if (StringUtils.isNotEmpty(dateFormat))
{
val = DateUtils.parseDate(val.toString(), new String[] { dateFormat });
}
else
{
// 默认格式
val = DateUtils.parseDate(val.toString());
}
} }
else if (val instanceof Double) else if (val instanceof Double)
{ {
val = DateUtil.getJavaDate((Double) val); // 如果是 Excel 数值型日期先转成 Date 再格式化为字符串
val = DateUtils.getDates((Double) val); // "yyyy-MM-dd"
} }
} }
else if (Boolean.TYPE == fieldType || Boolean.class == fieldType) else if (Boolean.TYPE == fieldType || Boolean.class == fieldType)
@ -491,13 +510,32 @@ public class ExcelUtil<T>
} }
else if (Date.class == fieldType) else if (Date.class == fieldType)
{ {
// if (val instanceof String)
// {
// val = DateUtils.parseDate(val);
// }
// else if (val instanceof Double)
// {
// val = DateUtil.getJavaDate((Double) val);
// }
if (val instanceof String) if (val instanceof String)
{ {
val = DateUtils.parseDate(val); // 如果是字符串按指定格式转成 Date
String dateFormat = field.getAnnotation(Excel.class).dateFormat();
if (StringUtils.isNotEmpty(dateFormat))
{
val = DateUtils.parseDate(val.toString(), new String[] { dateFormat });
}
else
{
// 默认格式
val = DateUtils.parseDate(val.toString());
}
} }
else if (val instanceof Double) else if (val instanceof Double)
{ {
val = DateUtil.getJavaDate((Double) val); // 如果是 Excel 数值型日期先转成 Date 再格式化为字符串
val = DateUtils.getDates((Double) val); // "yyyy-MM-dd"
} }
} }
else if (Boolean.TYPE == fieldType || Boolean.class == fieldType) else if (Boolean.TYPE == fieldType || Boolean.class == fieldType)
@ -515,12 +553,14 @@ public class ExcelUtil<T>
{ {
propertyName = field.getName() + "." + attr.targetAttr(); propertyName = field.getName() + "." + attr.targetAttr();
} }
else if(required) {
if(required) {
if(StringUtils.isNull(val) || StringUtils.isEmpty(val.toString().trim())) { if(StringUtils.isNull(val) || StringUtils.isEmpty(val.toString().trim())) {
throw new IllegalArgumentException(attr.name()+" 单元格必填项未填写,请正确填写!"); throw new IllegalArgumentException(attr.name()+" 单元格必填项未填写,请正确填写!");
} }
} }
else if(StringUtils.isNotEmpty(isRegex)) {
if(StringUtils.isNotEmpty(isRegex)) {
if(StringUtils.isNull(val) || StringUtils.isEmpty(val.toString().trim())) { if(StringUtils.isNull(val) || StringUtils.isEmpty(val.toString().trim())) {
throw new IllegalArgumentException(attr.name()+" 单元格必填项未填写,请正确填写!"); throw new IllegalArgumentException(attr.name()+" 单元格必填项未填写,请正确填写!");
}else{ }else{
@ -530,11 +570,13 @@ public class ExcelUtil<T>
} }
} }
} }
else if (StringUtils.isNotEmpty(attr.readConverterExp()))
if (StringUtils.isNotEmpty(attr.readConverterExp()))
{ {
val = reverseByExp(Convert.toStr(val), attr.readConverterExp(), attr.separator()); val = reverseByExp(Convert.toStr(val), attr.readConverterExp(), attr.separator());
} }
else if (!attr.handler().equals(ExcelHandlerAdapter.class))
if (!attr.handler().equals(ExcelHandlerAdapter.class))
{ {
val = dataFormatHandlerAdapter(val, attr); val = dataFormatHandlerAdapter(val, attr);
} }
@ -648,10 +690,29 @@ public class ExcelUtil<T>
} else if (BigDecimal.class == fieldType) { } else if (BigDecimal.class == fieldType) {
val = Convert.toBigDecimal(val); val = Convert.toBigDecimal(val);
} else if (Date.class == fieldType) { } else if (Date.class == fieldType) {
if (val instanceof String) { // if (val instanceof String) {
val = DateUtils.parseDate(val); // val = DateUtils.parseDate(val);
} else if (val instanceof Double) { // } else if (val instanceof Double) {
val = DateUtil.getJavaDate((Double) val); // val = DateUtil.getJavaDate((Double) val);
// }
if (val instanceof String)
{
// 如果是字符串按指定格式转成 Date
String dateFormat = field.getAnnotation(Excel.class).dateFormat();
if (StringUtils.isNotEmpty(dateFormat))
{
val = DateUtils.parseDate(val.toString(), new String[] { dateFormat });
}
else
{
// 默认格式
val = DateUtils.parseDate(val.toString());
}
}
else if (val instanceof Double)
{
// 如果是 Excel 数值型日期先转成 Date 再格式化为字符串
val = DateUtils.getDates((Double) val); // "yyyy-MM-dd"
} }
} else if (Boolean.TYPE == fieldType || Boolean.class == fieldType) { } else if (Boolean.TYPE == fieldType || Boolean.class == fieldType) {
val = Convert.toBool(val, false); val = Convert.toBool(val, false);
@ -1450,7 +1511,8 @@ public class ExcelUtil<T>
val = cell.getNumericCellValue(); val = cell.getNumericCellValue();
if (DateUtil.isCellDateFormatted(cell)) if (DateUtil.isCellDateFormatted(cell))
{ {
val = DateUtil.getJavaDate((Double) val); // POI Excel 日期格式转换 // val = DateUtil.getJavaDate((Double) val); // POI Excel 日期格式转换
val = DateUtils.getDates((Double) val);
} }
else else
{ {

View File

@ -27,7 +27,7 @@ public class BasePersonBean {
/** /**
* 身份证 * 身份证
*/ */
@Excel(name = "*身份证号", isRegex = RegexConstants.IDCARD) @Excel(name = "*身份证号",required = true, isRegex = RegexConstants.IDCARD)
private String idNumber; private String idNumber;
/** /**
@ -65,22 +65,28 @@ public class BasePersonBean {
@Excel(name = "*签发机关",required = true) @Excel(name = "*签发机关",required = true)
private String issueauthority; private String issueauthority;
/** // /**
* 有效开始日期 // * 有效开始日期
*/ // */
@Excel(name = "*身份证生效日期",required = true) // @Excel(name = "*身份证生效日期",required = true)
// private String signDate;
//
// /**
// * 有效结束日期
// */
// @Excel(name = "*身份证失效日期",required = true)
// private String expiryDate;
@Excel(name = "*身份证生效日期", isRegex = "^\\d{4}/\\d{1,2}/\\d{1,2}$")
private String signDate; private String signDate;
/** @Excel(name = "*身份证失效日期", isRegex = "^\\d{4}/\\d{1,2}/\\d{1,2}$")
* 有效结束日期
*/
@Excel(name = "*身份证失效日期",required = true)
private String expiryDate; private String expiryDate;
/** /**
* 联系方式 * 联系方式
*/ */
@Excel(name = "*手机号码", isRegex = RegexConstants.PHONE ) @Excel(name = "*手机号码", required = true, isRegex = RegexConstants.PHONE )
private String phone; private String phone;
/** /**
@ -133,13 +139,13 @@ public class BasePersonBean {
/** /**
* 紧急联系人 * 紧急联系人
*/ */
@Excel(name = "亲属.*紧急联系人") @Excel(name = "亲属.*紧急联系人" , required = true)
private String urgentPerson; private String urgentPerson;
/** /**
* 紧急联系人电话 * 紧急联系人电话
*/ */
@Excel(name = "*紧急联系人电话") @Excel(name = "*紧急联系人电话",required = true,isRegex = RegexConstants.PHONE)
private String urgentPersonPhone; private String urgentPersonPhone;
/** /**

View File

@ -24,7 +24,7 @@
<insert id="insertBasePersonBankData"> <insert id="insertBasePersonBankData">
replace into bm_worker_bank replace into bm_worker_bank
(`id_number`, `bank_card`, `bank_name`,`bank_inter`) (`id_number`, `bank_card`, `bank_name`,`ROLL_BANK_NAME`)
values values
<foreach item="params" collection="list" separator=","> <foreach item="params" collection="list" separator=",">
(#{params.idNumber},#{params.bankCard},#{params.bankName},#{params.bankInter}) (#{params.idNumber},#{params.bankCard},#{params.bankName},#{params.bankInter})

View File

@ -848,7 +848,7 @@
bw.expiry_date, bw.expiry_date,
bwb.BANK_NAME AS bankName, bwb.BANK_NAME AS bankName,
bwb.BANK_CARD AS bankCard, bwb.BANK_CARD AS bankCard,
bwb.BANK_INTER AS bankBranch, bwb.ROLL_BANK_NAME AS bankBranch,
bwc.contractCode, bwc.contractCode,
bwc.laborContractType, bwc.laborContractType,
bwc.contractValidDate, bwc.contractValidDate,
@ -1152,7 +1152,7 @@
bw.expiry_date, bw.expiry_date,
bwb.BANK_NAME AS bankName, bwb.BANK_NAME AS bankName,
bwb.BANK_CARD AS bankCard, bwb.BANK_CARD AS bankCard,
bwb.BANK_INTER AS bankBranch, bwb.ROLL_BANK_NAME AS bankBranch,
bwc.contractCode, bwc.contractCode,
bwc.laborContractType, bwc.laborContractType,
bwc.contractValidDate, bwc.contractValidDate,

View File

@ -105,14 +105,14 @@ function init() {
return c; return c;
} }
}, },
{"data": "name", "defaultContent": "", "width": "4%"}, {"data": "name", "defaultContent": "", "width": "10%"},
{"data": "postName", "defaultContent": "", "width": "4%"}, {"data": "postName", "defaultContent": "", "width": "10%"},
{"data": "companyName", "defaultContent": "", "width": "4%"}, {"data": "companyName", "defaultContent": "", "width": "10%"},
{"data": "proName", "defaultContent": "", "width": "5%"}, {"data": "proName", "defaultContent": "", "width": "15%"},
{"data": "subName", "defaultContent": "", "width": "5%"}, {"data": "subName", "defaultContent": "", "width": "15%"},
{"data": "teamName", "defaultContent": "", "width": "5%"}, {"data": "teamName", "defaultContent": "", "width": "5%"},
{"data": "einTime", "defaultContent": "", "width": "5%"}, {"data": "einTime", "defaultContent": "", "width": "15%"},
{"data": "exitTime", "defaultContent": "", "width": "5%"}, {"data": "exitTime", "defaultContent": "", "width": "15%"},
{"data": "contractId", "defaultContent": "", "width": "5%"}, {"data": "contractId", "defaultContent": "", "width": "5%"},
{ {
"data": "", "defaultContent": "", "width": "5%", "data": "", "defaultContent": "", "width": "5%",

View File

@ -18,6 +18,14 @@ function setData(idNumber,einTime){
size: 1024*30, //最大文件大小单位k size: 1024*30, //最大文件大小单位k
bindAction: '#hideUploadCheckup', //绑定的按钮 bindAction: '#hideUploadCheckup', //绑定的按钮
field: 'file', //传到后台的字段名,默认file field: 'file', //传到后台的字段名,默认file
text: { // 自定义提示文本
"data-format-error": "上传失败,请重新上传", // 数据格式错误的提示
"check-error": "上传只支持 PDF 文件,请重新选择!", // 文件格式校验失败的提示
"error": "上传失败,请重新上传", // 上传失败的提示
"limit-number": null, // 限制 number 属性的提示。若设置,需为函数写法
"limit-size": null, // 限制 size 属性的提示。若设置,需为函数写法
"cross-domain": "", // IE 下跨域的提示
},
choose: function (obj) { choose: function (obj) {
flag = false; flag = false;
// 清空现有预览和文件信息 // 清空现有预览和文件信息

View File

@ -18,6 +18,14 @@ function setData(idNumber,einTime){
size: 1024*30, //最大文件大小单位k size: 1024*30, //最大文件大小单位k
bindAction: '#hideUploadCheckup', //绑定的按钮 bindAction: '#hideUploadCheckup', //绑定的按钮
field: 'file', //传到后台的字段名,默认file field: 'file', //传到后台的字段名,默认file
text: { // 自定义提示文本
"data-format-error": "上传失败,请重新上传", // 数据格式错误的提示
"check-error": "上传只支持PDF 文件,请重新选择!", // 文件格式校验失败的提示
"error": "上传失败,请重新上传", // 上传失败的提示
"limit-number": null, // 限制 number 属性的提示。若设置,需为函数写法
"limit-size": null, // 限制 size 属性的提示。若设置,需为函数写法
"cross-domain": "", // IE 下跨域的提示
},
choose: function (obj) { choose: function (obj) {
flag = false; flag = false;
// 清空现有预览和文件信息 // 清空现有预览和文件信息

View File

@ -4,7 +4,8 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>出场证明-上传</title> <title>出场证明-上传</title>
<link rel="stylesheet" type="text/css" media="screen" href="../../../../css/bootstrap.min.css"> <link rel="stylesheet" type="text/css" media="screen" href="../../../../css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" media="screen" href="../../../../layui/css/layui.css"> <!-- <link rel="stylesheet" type="text/css" media="screen" href="../../../../layui/css/layui.css">-->
<link rel="stylesheet" type="text/css" media="screen" href="../../../../layui-v2.9.10/layui/css/layui.css">
<link rel="stylesheet" type="text/css" media="screen" href="../../../../css/work/personEntry/personEntryFrom.css"> <link rel="stylesheet" type="text/css" media="screen" href="../../../../css/work/personEntry/personEntryFrom.css">
</head> </head>
<body> <body>
@ -40,7 +41,8 @@
<script type="text/javascript" src="../../../../js/libs/jquery-3.6.0.js"></script> <script type="text/javascript" src="../../../../js/libs/jquery-3.6.0.js"></script>
<script type="text/javascript" src="../../../../js/jq.js"></script> <script type="text/javascript" src="../../../../js/jq.js"></script>
<script type="text/javascript" src="../../../../layui2.7.6/layui.js"></script> <!--<script type="text/javascript" src="../../../../layui2.7.6/layui.js"></script>-->
<script type="text/javascript" src="../../../../layui-v2.9.10/layui/layui.js"></script>
<script type="text/javascript" src="../../../../js/publicJs.js"></script> <script type="text/javascript" src="../../../../js/publicJs.js"></script>
<script type="text/javascript" src="../../../../js/dict.js"></script> <script type="text/javascript" src="../../../../js/dict.js"></script>
<script type="text/javascript" src="../../../../js/select.js"></script> <script type="text/javascript" src="../../../../js/select.js"></script>

View File

@ -4,7 +4,8 @@
<meta charset="UTF-8"> <meta charset="UTF-8">
<title>出场证明-上传</title> <title>出场证明-上传</title>
<link rel="stylesheet" type="text/css" media="screen" href="../../../../css/bootstrap.min.css"> <link rel="stylesheet" type="text/css" media="screen" href="../../../../css/bootstrap.min.css">
<link rel="stylesheet" type="text/css" media="screen" href="../../../../layui/css/layui.css"> <!-- <link rel="stylesheet" type="text/css" media="screen" href="../../../../layui/css/layui.css">-->
<link rel="stylesheet" type="text/css" media="screen" href="../../../../layui-v2.9.10/layui/css/layui.css"></link>
<link rel="stylesheet" type="text/css" media="screen" href="../../../../css/work/personEntry/personEntryFrom.css"> <link rel="stylesheet" type="text/css" media="screen" href="../../../../css/work/personEntry/personEntryFrom.css">
</head> </head>
<body> <body>
@ -40,7 +41,8 @@
<script type="text/javascript" src="../../../../js/libs/jquery-3.6.0.js"></script> <script type="text/javascript" src="../../../../js/libs/jquery-3.6.0.js"></script>
<script type="text/javascript" src="../../../../js/jq.js"></script> <script type="text/javascript" src="../../../../js/jq.js"></script>
<script type="text/javascript" src="../../../../layui2.7.6/layui.js"></script> <!--<script type="text/javascript" src="../../../../layui2.7.6/layui.js"></script>-->
<script type="text/javascript" src="../../../../layui-v2.9.10/layui/layui.js"></script>
<script type="text/javascript" src="../../../../js/publicJs.js"></script> <script type="text/javascript" src="../../../../js/publicJs.js"></script>
<script type="text/javascript" src="../../../../js/dict.js"></script> <script type="text/javascript" src="../../../../js/dict.js"></script>
<script type="text/javascript" src="../../../../js/select.js"></script> <script type="text/javascript" src="../../../../js/select.js"></script>