!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;
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -231,6 +249,17 @@ public final class ExcelAnnotationUtils {
|
|||||||
String resolved = displayToCode.getOrDefault(value, value);
|
String resolved = displayToCode.getOrDefault(value, value);
|
||||||
|
|
||||||
if (type == String.class) {
|
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);
|
field.set(obj, resolved);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -89,8 +89,8 @@ public class BgXiSpeak implements Serializable {
|
|||||||
@Schema(description = "学习传达研究部署情况")
|
@Schema(description = "学习传达研究部署情况")
|
||||||
private java.lang.String status;
|
private java.lang.String status;
|
||||||
/**密级*/
|
/**密级*/
|
||||||
@Excel(name = "密级(请填入非秘/秘密/机密)-必填", width = 15, dicCode = "secret_level")
|
@Excel(name = "密级(请填入非密/秘密/机密)-必填", width = 15, dicCode = "secret_level")
|
||||||
@ExcelColumn(name = "密级(请填入非秘/秘密/机密)-必填", width = 15, dicCode = "secret_level")
|
@ExcelColumn(name = "密级(请填入非密/秘密/机密)-必填", width = 15, dicCode = "secret_level")
|
||||||
@Dict(dicCode = "secret_level")
|
@Dict(dicCode = "secret_level")
|
||||||
@Schema(description = "密级")
|
@Schema(description = "密级")
|
||||||
@NotBlank(message = "不能为空")
|
@NotBlank(message = "不能为空")
|
||||||
@@ -154,8 +154,8 @@ public class BgXiSpeak implements Serializable {
|
|||||||
@Schema(description = "拖期风险应对措施")
|
@Schema(description = "拖期风险应对措施")
|
||||||
private java.lang.String delayRiskMitigation;
|
private java.lang.String delayRiskMitigation;
|
||||||
/**完成状态(0推进中,1已完成)*/
|
/**完成状态(0推进中,1已完成)*/
|
||||||
@Excel(name = "完成状态(请填入推进中/已完成)-必填", width = 15, dicCode = "db_status")
|
// @Excel(name = "完成状态(请填入推进中/已完成)-必填", width = 15, dicCode = "db_status")
|
||||||
@ExcelColumn(name = "完成状态(请填入推进中/已完成)-必填", width = 15, dicCode = "db_status")
|
// @ExcelColumn(name = "完成状态(请填入推进中/已完成)-必填", width = 15, dicCode = "db_status")
|
||||||
@Schema(description = "完成状态(0推进中,1已完成)")
|
@Schema(description = "完成状态(0推进中,1已完成)")
|
||||||
@Dict( dicCode = "db_status")
|
@Dict( dicCode = "db_status")
|
||||||
private java.lang.Integer completionStatus;
|
private java.lang.Integer completionStatus;
|
||||||
|
|||||||
+3
@@ -52,6 +52,9 @@ public class BgXiSpeakServiceImpl extends ServiceImpl<BgXiSpeakMapper, BgXiSpeak
|
|||||||
public void addBgXiSpeak(BgXiSpeak bgXiSpeak) {
|
public void addBgXiSpeak(BgXiSpeak bgXiSpeak) {
|
||||||
//新增时设置hasChild为0
|
//新增时设置hasChild为0
|
||||||
bgXiSpeak.setHasChild(IBgXiSpeakService.NOCHILD);
|
bgXiSpeak.setHasChild(IBgXiSpeakService.NOCHILD);
|
||||||
|
if (bgXiSpeak.getBpmStatus() == null) {
|
||||||
|
bgXiSpeak.setBpmStatus(1);
|
||||||
|
}
|
||||||
if(oConvertUtils.isEmpty(bgXiSpeak.getPid())){
|
if(oConvertUtils.isEmpty(bgXiSpeak.getPid())){
|
||||||
bgXiSpeak.setPid(IBgXiSpeakService.ROOT_PID_VALUE);
|
bgXiSpeak.setPid(IBgXiSpeakService.ROOT_PID_VALUE);
|
||||||
}else{
|
}else{
|
||||||
|
|||||||
+3
@@ -150,6 +150,9 @@ public class BgPartymatterController extends JeecgController<BgPartymatter, IBgP
|
|||||||
if (oConvertUtils.isEmpty(bgPartymatter.getDelFlag())) {
|
if (oConvertUtils.isEmpty(bgPartymatter.getDelFlag())) {
|
||||||
bgPartymatter.setDelFlag(BgPartymatterConstant.DelFlag.NORMAL);
|
bgPartymatter.setDelFlag(BgPartymatterConstant.DelFlag.NORMAL);
|
||||||
}
|
}
|
||||||
|
if (bgPartymatter.getBpmStatus() == null) {
|
||||||
|
bgPartymatter.setBpmStatus("1");
|
||||||
|
}
|
||||||
fillDefaultMeetingTypeForCreate(bgPartymatter);
|
fillDefaultMeetingTypeForCreate(bgPartymatter);
|
||||||
fillGeneratedNumber(bgPartymatter);
|
fillGeneratedNumber(bgPartymatter);
|
||||||
bgPartymatterService.save(bgPartymatter);
|
bgPartymatterService.save(bgPartymatter);
|
||||||
|
|||||||
+3
@@ -39,6 +39,9 @@ public class DqInspectTaskServiceImpl extends ServiceImpl<DqInspectTaskMapper, D
|
|||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public void saveMain(DqInspectTask dqInspectTask, List<DqInspectProgress> dqInspectProgressList) {
|
public void saveMain(DqInspectTask dqInspectTask, List<DqInspectProgress> dqInspectProgressList) {
|
||||||
|
if (dqInspectTask.getBpmStatus() == null) {
|
||||||
|
dqInspectTask.setBpmStatus("1");
|
||||||
|
}
|
||||||
validateProblemId(dqInspectTask);
|
validateProblemId(dqInspectTask);
|
||||||
dqInspectTaskMapper.insert(dqInspectTask);
|
dqInspectTaskMapper.insert(dqInspectTask);
|
||||||
if(dqInspectProgressList!=null && dqInspectProgressList.size()>0) {
|
if(dqInspectProgressList!=null && dqInspectProgressList.size()>0) {
|
||||||
|
|||||||
Reference in New Issue
Block a user