!85 feat(excel): Excel导入校验和翻译支持逗号分隔多值
* feat(excel): Excel导入校验和翻译支持逗号分隔多值 * fix(xispeak): 移除完成状态Excel导入导出注解,避免导入时覆盖系统自动维护的状态 * fix(xispeak): 修复密级Excel列名typo 非秘→非密 * fix(xispeak,partymatter,dq): 移除实体类 bpmStatus 字段默认值,改为 service 层设置,避免 Q… * fix(xispeak,partymatter,dq): 实体类 bpmStatus 默认值设为"未开始"
This commit is contained in:
+29
@@ -220,6 +220,24 @@ public final class ExcelAnnotationUtils {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
// 逗号分隔多值:逐个验证每个部分是否在字典范围内
|
||||
if (value.contains(",")) {
|
||||
String[] parts = value.split(",");
|
||||
for (String part : parts) {
|
||||
String trimmed = part.trim();
|
||||
if (trimmed.isEmpty()) continue;
|
||||
boolean found = false;
|
||||
for (String s : replace) {
|
||||
String[] arr = s.split(",");
|
||||
if (arr.length >= 2 && arr[0].equals(trimmed)) {
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!found) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -231,6 +249,17 @@ public final class ExcelAnnotationUtils {
|
||||
String resolved = displayToCode.getOrDefault(value, value);
|
||||
|
||||
if (type == String.class) {
|
||||
// 逗号分隔多值:逐个翻译后再拼回(如 "部门A,部门B" → "id_a,id_b")
|
||||
if (resolved.equals(value) && value.contains(",")) {
|
||||
String[] parts = value.split(",");
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = 0; i < parts.length; i++) {
|
||||
if (i > 0) sb.append(",");
|
||||
String trimmed = parts[i].trim();
|
||||
sb.append(displayToCode.getOrDefault(trimmed, trimmed));
|
||||
}
|
||||
resolved = sb.toString();
|
||||
}
|
||||
field.set(obj, resolved);
|
||||
return;
|
||||
}
|
||||
|
||||
+4
-4
@@ -89,8 +89,8 @@ public class BgXiSpeak implements Serializable {
|
||||
@Schema(description = "学习传达研究部署情况")
|
||||
private java.lang.String status;
|
||||
/**密级*/
|
||||
@Excel(name = "密级(请填入非秘/秘密/机密)-必填", width = 15, dicCode = "secret_level")
|
||||
@ExcelColumn(name = "密级(请填入非秘/秘密/机密)-必填", width = 15, dicCode = "secret_level")
|
||||
@Excel(name = "密级(请填入非密/秘密/机密)-必填", width = 15, dicCode = "secret_level")
|
||||
@ExcelColumn(name = "密级(请填入非密/秘密/机密)-必填", width = 15, dicCode = "secret_level")
|
||||
@Dict(dicCode = "secret_level")
|
||||
@Schema(description = "密级")
|
||||
@NotBlank(message = "不能为空")
|
||||
@@ -154,8 +154,8 @@ public class BgXiSpeak implements Serializable {
|
||||
@Schema(description = "拖期风险应对措施")
|
||||
private java.lang.String delayRiskMitigation;
|
||||
/**完成状态(0推进中,1已完成)*/
|
||||
@Excel(name = "完成状态(请填入推进中/已完成)-必填", width = 15, dicCode = "db_status")
|
||||
@ExcelColumn(name = "完成状态(请填入推进中/已完成)-必填", width = 15, dicCode = "db_status")
|
||||
// @Excel(name = "完成状态(请填入推进中/已完成)-必填", width = 15, dicCode = "db_status")
|
||||
// @ExcelColumn(name = "完成状态(请填入推进中/已完成)-必填", width = 15, dicCode = "db_status")
|
||||
@Schema(description = "完成状态(0推进中,1已完成)")
|
||||
@Dict( dicCode = "db_status")
|
||||
private java.lang.Integer completionStatus;
|
||||
|
||||
+3
@@ -52,6 +52,9 @@ public class BgXiSpeakServiceImpl extends ServiceImpl<BgXiSpeakMapper, BgXiSpeak
|
||||
public void addBgXiSpeak(BgXiSpeak bgXiSpeak) {
|
||||
//新增时设置hasChild为0
|
||||
bgXiSpeak.setHasChild(IBgXiSpeakService.NOCHILD);
|
||||
if (bgXiSpeak.getBpmStatus() == null) {
|
||||
bgXiSpeak.setBpmStatus(1);
|
||||
}
|
||||
if(oConvertUtils.isEmpty(bgXiSpeak.getPid())){
|
||||
bgXiSpeak.setPid(IBgXiSpeakService.ROOT_PID_VALUE);
|
||||
}else{
|
||||
|
||||
+3
@@ -150,6 +150,9 @@ public class BgPartymatterController extends JeecgController<BgPartymatter, IBgP
|
||||
if (oConvertUtils.isEmpty(bgPartymatter.getDelFlag())) {
|
||||
bgPartymatter.setDelFlag(BgPartymatterConstant.DelFlag.NORMAL);
|
||||
}
|
||||
if (bgPartymatter.getBpmStatus() == null) {
|
||||
bgPartymatter.setBpmStatus("1");
|
||||
}
|
||||
fillDefaultMeetingTypeForCreate(bgPartymatter);
|
||||
fillGeneratedNumber(bgPartymatter);
|
||||
bgPartymatterService.save(bgPartymatter);
|
||||
|
||||
+3
@@ -39,6 +39,9 @@ public class DqInspectTaskServiceImpl extends ServiceImpl<DqInspectTaskMapper, D
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void saveMain(DqInspectTask dqInspectTask, List<DqInspectProgress> dqInspectProgressList) {
|
||||
if (dqInspectTask.getBpmStatus() == null) {
|
||||
dqInspectTask.setBpmStatus("1");
|
||||
}
|
||||
validateProblemId(dqInspectTask);
|
||||
dqInspectTaskMapper.insert(dqInspectTask);
|
||||
if(dqInspectProgressList!=null && dqInspectProgressList.size()>0) {
|
||||
|
||||
Reference in New Issue
Block a user