Przeglądaj źródła

修改单导入优化

DLC 21 godzin temu
rodzic
commit
389f10ce5c

+ 9 - 9
qcs-common/src/main/java/com/rongwei/bscommon/sys/dao/QcsMdfFormDao.java

@@ -71,17 +71,17 @@ public interface QcsMdfFormDao extends BaseMapper<QcsMdfFormDo> {
     @Select("select distinct DUTYDEPTID from qcs_mdf_detail where DELETED='0' and FORMID=#{formId} and IFNULL(DUTYDEPTID,'')!=''")
     List<QcsMdfDetailDo> getDutyDeptIds(@Param(value = "formId") String formId);
 
-    @Select("select f.ID,f.PROJECTDLPROJID,IFNULL(f.TYPENAME,'') as TYPENAME,IFNULL(f.NUMBERNAME,'') as NUMBERNAME,f.SOURCENUMBERCODE,IFNULL(f.SOURCENAME,'') as SOURCENAME,\n" +
-            "\tIFNULL(f.RECTIFYCODE,'') as RECTIFYCODE,IFNULL(f.MANAGEADMINNICKNAME,'') as MANAGEADMINNICKNAME,IFNULL(f.PRODUCENAME,'') as PRODUCENAME,d.SECTIONID,s.SECTIONSN,\n" +
+    @Select("select f.ID,f.PROJECTDLPROJID,IFNULL(f.TYPENAME,'') as TYPENAME,IFNULL(f.NUMBERNAME,'') as NUMBERNAME,f.SOURCENUMBERCODE,IFNULL(f.SOURCENAME,'') as SOURCENAME,f.CREATEUSERID as FCREATEUSERID,\n" +
+            "\tIFNULL(f.RECTIFYCODE,'') as RECTIFYCODE,IFNULL(f.MANAGEADMINNICKNAME,'') as MANAGEADMINNICKNAME,IFNULL(f.PRODUCENAME,'') as PRODUCENAME,s.ID as SECTIONID,s.SECTIONSN,\n" +
             "\tIFNULL(s.MODIFYBY,'') as MODIFYBY,IFNULL(s.ERRORDESIGNDTDRAWINGNO,'') as ERRORDESIGNDTDRAWINGNO,IFNULL(s.DTDESIGNER,'') as DTDESIGNER,IFNULL(s.DTWHOCOLLATE,'') as DTWHOCOLLATE,\n" +
-            "\tIFNULL(s.DTWHOAPPROVE,'') as DTWHOAPPROVE,IFNULL(s.ERRORROUTINE,'') as ERRORROUTINE,IFNULL(s.ERRORAGAIN,'') as ERRORAGAIN,IFNULL(s.ERRORHARD,'') as ERRORHARD,\n" +
-            "\tIFNULL(s.ERRORTABLE,'') as ERRORTABLE,d.ROWID,IFNULL(r.CONTENT,'') as CONTENT,SUBSTRING_INDEX(r.ROWSN, '-', -1) as ROWSN, IFNULL(r.REMARK,'') as REMARK,\n" +
+            "\tIFNULL(s.DTWHOAPPROVE,'') as DTWHOAPPROVE,IFNULL(s.ERRORROUTINE,'') as ERRORROUTINE,IFNULL(s.ERRORAGAIN,'') as ERRORAGAIN,IFNULL(s.ERRORHARD,'') as ERRORHARD,s.CREATEUSERID as SCREATEUSERID,\n" +
+            "\tIFNULL(s.ERRORTABLE,'') as ERRORTABLE,r.ID as ROWID,IFNULL(r.CONTENT,'') as CONTENT,SUBSTRING_INDEX(r.ROWSN, '-', -1) as ROWSN, IFNULL(r.REMARK,'') as REMARK,r.CREATEUSERID as RCREATEUSERID,\n" +
             "\tIFNULL(r.TASKDESIGNDTDRAWINGNO,'') as TASKDESIGNDTDRAWINGNO,IFNULL(r.MINORDESIGNDTDRAWINGNO,'') as MINORDESIGNDTDRAWINGNO, IFNULL(r.MINORDESIGNDTPARTNAME,'') as MINORDESIGNDTPARTNAME,\n" +
-            "\td.ID as DETAILID,d.STATUS,IFNULL(d.DEPTID,'') as DEPTID,IFNULL(f.BASEID,'') as BASEID,IFNULL(f.SHAREDEPTIDS,'') as SHAREDEPTIDS\n" +
-            "FROM qcs_mdf_detail d LEFT JOIN qcs_mdf_row r ON d.ROWID=r.ID\n" +
-            "LEFT JOIN qcs_mdf_section s ON r.SECTIONID=s.ID\n" +
-            "LEFT JOIN qcs_mdf_form f ON s.FORMID=f.ID\n" +
-            "WHERE d.DELETED='0' and r.DELETED='0' and s.DELETED='0' and f.DELETED='0' order by s.SECTIONSN,SUBSTRING_INDEX(r.ROWSN, '-', -1)")
+            "\tIFNULL(d.ID,'') as DETAILID,IFNULL(d.STATUS,'') as STATUS,IFNULL(d.DEPTID,'') as DEPTID,IFNULL(f.BASEID,'') as BASEID,IFNULL(f.SHAREDEPTIDS,'') as SHAREDEPTIDS\n" +
+            "FROM qcs_mdf_form f LEFT JOIN qcs_mdf_section s ON s.FORMID=f.ID\n" +
+            "LEFT JOIN qcs_mdf_row r ON r.SECTIONID=s.ID\n" +
+            "LEFT JOIN qcs_mdf_detail d ON d.ROWID=r.ID and d.DELETED='0'\n" +
+            "WHERE r.DELETED='0' and s.DELETED='0' and f.DELETED='0' order by s.SECTIONSN,SUBSTRING_INDEX(r.ROWSN, '-', -1)")
     List<ImportMdfVo> getMdfForms();
 
     @Select("select s.FORMID as ID,r.SECTIONID,IFNULL(s.SECTIONSN,'') as SECTIONSN,r.ID as ROWID,SUBSTRING_INDEX(IFNULL(r.ROWSN,''), '-', -1) as ROWSN \n" +

+ 269 - 234
qcs-common/src/main/java/com/rongwei/bscommon/sys/service/impl/QcsMdfFormServiceImpl.java

@@ -694,15 +694,16 @@ public class QcsMdfFormServiceImpl extends ServiceImpl<QcsMdfFormDao, QcsMdfForm
                 ));
                 List<Map<String, String>> finalResDutyList = resDutyList;
                 formList.forEach((fm, flist) -> {
+                    Boolean fIsFromMdf = false;//是否来自修改单系统
+                    //主表数据
+                    ImportMdfVo mdfVo = qcsMdfFormDos.stream().filter(mv -> fm.getProjectdlprojid().equals(mv.getProjectdlprojid()) && fm.getSourcenumbercode().equals(mv.getSourcenumbercode())).findAny().orElse(null);
                     //修改单分组
                     Map<ImportMdfVo, List<ImportMdfVo>> formListMap = flist.stream().collect(Collectors.groupingBy(
                             f -> new ImportMdfVo(f.getTypename(), f.getSourcename(), f.getNumbername(), f.getRectifycode(), f.getManageadminnickname(), f.getProducename())
                     ));
-                    if (formListMap.size() > 1) {
+                    if (mdfVo != null && !mdfVo.getFcreateuserid().equals("0") && formListMap.size() > 1) {
                         allStrBuilder.append("项目工号" + fm.getProjectdlprojid() + ",修改单编号" + fm.getSourcenumbercode() + "有" + formListMap.size() + "行,但产品类型、类别、修改原因、整改编号、项目总工、项目生产阶段有不同,请检查<br>");
                     } else {
-                        //主表数据
-                        ImportMdfVo mdfVo = qcsMdfFormDos.stream().filter(mv -> fm.getProjectdlprojid().equals(mv.getProjectdlprojid()) && fm.getSourcenumbercode().equals(mv.getSourcenumbercode())).findAny().orElse(null);
                         String formid = "";
                         Boolean isnew = false;
                         if (mdfVo == null) {
@@ -710,23 +711,28 @@ public class QcsMdfFormServiceImpl extends ServiceImpl<QcsMdfFormDao, QcsMdfForm
                             isnew = true;
                         } else {
                             StringBuilder sb = new StringBuilder();
-                            if (!flist.get(0).getTypename().equals(mdfVo.getTypename())) {
-                                sb.append("产品类型" + flist.get(0).getTypename() + "与系统产品类型" + mdfVo.getTypename() + "不同,");
-                            }
-                            if (!flist.get(0).getNumbername().equals(mdfVo.getNumbername())) {
-                                sb.append("类别" + flist.get(0).getNumbername() + "与系统类别" + mdfVo.getNumbername() + "不同,");
-                            }
-                            if (!flist.get(0).getSourcename().equals(mdfVo.getSourcename())) {
-                                sb.append("修改原因" + flist.get(0).getSourcename() + "与系统修改原因" + mdfVo.getSourcename() + "不同,");
-                            }
-                            if (!flist.get(0).getRectifycode().equals(mdfVo.getRectifycode())) {
-                                sb.append("整改编号" + flist.get(0).getRectifycode() + "与系统整改编号" + mdfVo.getRectifycode() + "不同,");
-                            }
-                            if (!flist.get(0).getManageadminnickname().equals(mdfVo.getManageadminnickname())) {
-                                sb.append("项目总工" + flist.get(0).getManageadminnickname() + "与系统项目总工" + mdfVo.getManageadminnickname() + "不同,");
-                            }
-                            if (!flist.get(0).getProducename().equals(mdfVo.getProducename())) {
-                                sb.append("项目生产阶段" + flist.get(0).getProducename() + "与系统项目生产阶段" + mdfVo.getProducename() + "不同,");
+                            if (mdfVo.getFcreateuserid().equals("0")) {
+                                fIsFromMdf = true;
+                                flist.get(0).setSourcename(mdfVo.getSourcename());
+                            } else {
+                                if (!flist.get(0).getTypename().equals(mdfVo.getTypename())) {
+                                    sb.append("产品类型" + flist.get(0).getTypename() + "与系统产品类型" + mdfVo.getTypename() + "不同,");
+                                }
+                                if (!flist.get(0).getNumbername().equals(mdfVo.getNumbername())) {
+                                    sb.append("类别" + flist.get(0).getNumbername() + "与系统类别" + mdfVo.getNumbername() + "不同,");
+                                }
+                                if (!flist.get(0).getSourcename().equals(mdfVo.getSourcename())) {
+                                    sb.append("修改原因" + flist.get(0).getSourcename() + "与系统修改原因" + mdfVo.getSourcename() + "不同,");
+                                }
+                                if (!flist.get(0).getRectifycode().equals(mdfVo.getRectifycode())) {
+                                    sb.append("整改编号" + flist.get(0).getRectifycode() + "与系统整改编号" + mdfVo.getRectifycode() + "不同,");
+                                }
+                                if (!flist.get(0).getManageadminnickname().equals(mdfVo.getManageadminnickname())) {
+                                    sb.append("项目总工" + flist.get(0).getManageadminnickname() + "与系统项目总工" + mdfVo.getManageadminnickname() + "不同,");
+                                }
+                                if (!flist.get(0).getProducename().equals(mdfVo.getProducename())) {
+                                    sb.append("项目生产阶段" + flist.get(0).getProducename() + "与系统项目生产阶段" + mdfVo.getProducename() + "不同,");
+                                }
                             }
 
                             if (StringUtils.isNotBlank(sb.toString())) {
@@ -740,244 +746,262 @@ public class QcsMdfFormServiceImpl extends ServiceImpl<QcsMdfFormDao, QcsMdfForm
 
                         if (StringUtils.isBlank(allStrBuilder.toString())) {
                             AtomicReference<Integer> maxSectionSn = new AtomicReference<>(0);
-                            //按照内容序号分组
-                            Map<String, List<ImportMdfVo>> snoListMap = flist.stream().collect(Collectors.groupingBy(ImportMdfVo::getSectionsn));
-                            snoListMap.forEach((sno, slm) -> {
-                                if (StringUtils.isNotBlank(sno)) {
-                                    Map<ImportMdfVo, List<ImportMdfVo>> difSmap = slm.stream().collect(Collectors.groupingBy(
-                                            p -> new ImportMdfVo(p.getModifyby(), p.getErrordesigndtdrawingno(), p.getDtdesigner(), p.getDtwhocollate(), p.getDtwhoapprove(), p.getErrorroutine(), p.getErroragain(), p.getErrorhard(), p.getErrortable())
+                            //序号分组 空值在后,有值正序在前
+                            Map<ImportMdfVo, List<ImportMdfVo>> mdfVoListMap = flist.stream()
+                                    .sorted(createReverseComparator("sectionsn"))
+                                    .collect(Collectors.groupingBy(
+                                            p -> new ImportMdfVo(p.getSectionsn(), p.getModifyby(), p.getErrordesigndtdrawingno(), p.getDtdesigner(), p.getDtwhocollate(), p.getDtwhoapprove(), p.getErrorroutine(), p.getErroragain(), p.getErrorhard(), p.getErrortable()),
+                                            LinkedHashMap::new,  // 保持分组顺序
+                                            Collectors.toList()
                                     ));
-                                    if (difSmap.size() > 1) {
-                                        allStrBuilder.append("项目工号" + fm.getProjectdlprojid() + ",修改单编号" + fm.getSourcenumbercode() + ",内容序号" + sno + "有" + slm.size() + "行,但修改责任方、错误源头图号、设计人、校对人、审核人、常规错误、二过错误、较难发现错误、校对表错误有不同,请检查<br>");
-                                    }
-                                }
-                            });
-
-                            if (StringUtils.isBlank(allStrBuilder.toString())) {
-                                //序号分组 空值在后,有值正序在前
-                                Map<ImportMdfVo, List<ImportMdfVo>> mdfVoListMap = flist.stream()
-                                        .sorted(createReverseComparator("sectionsn"))
-                                        .collect(Collectors.groupingBy(
-                                                p -> new ImportMdfVo(p.getSectionsn(), p.getModifyby(), p.getErrordesigndtdrawingno(), p.getDtdesigner(), p.getDtwhocollate(), p.getDtwhoapprove(), p.getErrorroutine(), p.getErroragain(), p.getErrorhard(), p.getErrortable()),
-                                                LinkedHashMap::new,  // 保持分组顺序
-                                                Collectors.toList()
+                            String finalFormid = formid;
+                            String finalFormid1 = formid;
+                            mdfVoListMap.forEach((mvo, slist) -> {
+                                //按照排号分组
+                                Map<String, List<ImportMdfVo>> rnoListMap = slist.stream().collect(Collectors.groupingBy(ImportMdfVo::getRowsn));
+                                rnoListMap.forEach((rno, rlm) -> {
+                                    if (StringUtils.isNotBlank(rno) && StringUtils.isNotBlank(mvo.getSectionsn())) {
+                                        Map<ImportMdfVo, List<ImportMdfVo>> difRMap = rlm.stream().collect(Collectors.groupingBy(
+                                                m -> new ImportMdfVo(m.getContent(), m.getRemark(), m.getTaskdesigndtdrawingno(), m.getMinordesigndtdrawingno(), m.getMinordesigndtpartname(), m.getDutydeptname(), m.getManday(), m.getMater(), m.getEquip(), m.getOther())
                                         ));
-                                String finalFormid = formid;
-                                String finalFormid1 = formid;
-                                mdfVoListMap.forEach((mvo, slist) -> {
-//                                for (int s = 0; s < slist.size(); s++) {
-                                    List<ImportMdfVo> secVos;
-                                    String sectionid = "";
-                                    if (StringUtils.isBlank(mvo.getSectionsn())) {
-                                        sectionid = SecurityUtil.getUUID();
-                                        secVos = qcsMdfFormDos.stream().filter(sv -> fm.getProjectdlprojid().equals(sv.getProjectdlprojid()) && fm.getSourcenumbercode().equals(sv.getSourcenumbercode())).collect(Collectors.toList());
-                                        if (secVos.size() == 0 || maxSectionSn.get() != 0) {
-                                            maxSectionSn.getAndSet(maxSectionSn.get() + 1);
-                                        } else {
-                                            maxSectionSn.getAndSet(Integer.parseInt(secVos.get(secVos.size() - 1).getSectionsn()) + 1);
+                                        difRMap.forEach((ro, rl) -> {
+                                            if (rl.size() > 1) {
+//                                                allStrBuilder.append("项目工号" + fm.getProjectdlprojid() + ",修改单编号" + fm.getSourcenumbercode() + ",排号" + rno + "有" + rlm.size() + "行,但修改内容、修改图号(任务单部件)、修改图号(次级部件)、修改图名(次级部件)、责任单位、人工、材料、设备、其他有不同,请检查<br>");
+                                                allStrBuilder.append("项目工号" + fm.getProjectdlprojid() + ",修改单编号" + fm.getSourcenumbercode() + ",内容序号" + mvo.getSectionsn() + ",排号" + rno + "有" + rlm.size() + "行,请检查<br>");
+                                            }
+                                        });
+                                    }
+                                });
+                                if (StringUtils.isBlank(allStrBuilder.toString())) {
+                                    for (int s = 0; s < slist.size(); s++) {
+                                        if (s > 0 && StringUtils.isNotBlank(slist.get(s).getSectionsn())) {
+                                            continue;
                                         }
-                                    } else {
-                                        secVos = qcsMdfFormDos.stream().filter(sv -> fm.getProjectdlprojid().equals(sv.getProjectdlprojid()) && fm.getSourcenumbercode().equals(sv.getSourcenumbercode()) && mvo.getSectionsn().equals(sv.getSectionsn())).collect(Collectors.toList());
-                                        if (secVos.size() == 0) {
+                                        Boolean sIsFromMdf = false;//是否来自修改单系统
+                                        List<ImportMdfVo> secVos;
+                                        String sectionid = "";
+                                        if (StringUtils.isBlank(mvo.getSectionsn())) {
                                             sectionid = SecurityUtil.getUUID();
-                                            maxSectionSn.getAndSet(Integer.parseInt(mvo.getSectionsn()));
-                                        } else {
-                                            ImportMdfVo secVo = secVos.get(0);
-                                            StringBuilder sb = new StringBuilder();
-                                            if (!mvo.getModifyby().equals(secVo.getModifyby())) {
-                                                sb.append("修改责任方" + mvo.getModifyby() + "与系统修改责任方" + secVo.getModifyby() + "不同,");
-                                            }
-                                            if (!mvo.getErrordesigndtdrawingno().equals(secVo.getErrordesigndtdrawingno())) {
-                                                sb.append("错误源头图号" + mvo.getErrordesigndtdrawingno() + "与系统错误源头图号" + secVo.getErrordesigndtdrawingno() + "不同,");
-                                            }
-                                            if (!mvo.getDtdesigner().equals(secVo.getDtdesigner())) {
-                                                sb.append("设计人" + mvo.getDtdesigner() + "与系统设计人" + secVo.getDtdesigner() + "不同,");
-                                            }
-                                            if (!mvo.getDtwhocollate().equals(secVo.getDtwhocollate())) {
-                                                sb.append("校对人" + mvo.getDtwhocollate() + "与系统校对人" + secVo.getDtwhocollate() + "不同,");
-                                            }
-                                            if (!mvo.getDtwhoapprove().equals(secVo.getDtwhoapprove())) {
-                                                sb.append("审核人" + mvo.getDtwhoapprove() + "与系统审核人" + secVo.getDtwhoapprove() + "不同,");
-                                            }
-                                            if (!mvo.getErrorroutine().equals(secVo.getErrorroutine())) {
-                                                sb.append("常规错误" + mvo.getErrorroutine() + "与系统常规错误" + secVo.getErrorroutine() + "不同,");
-                                            }
-                                            if (!mvo.getErroragain().equals(secVo.getErroragain())) {
-                                                sb.append("二过错误" + mvo.getErroragain() + "与系统二过错误" + secVo.getErroragain() + "不同,");
-                                            }
-                                            if (!mvo.getErrorhard().equals(secVo.getErrorhard())) {
-                                                sb.append("较难发现错误" + mvo.getErrorhard() + "与系统较难发现错误" + secVo.getErrorhard() + "不同,");
-                                            }
-                                            if (!mvo.getErrortable().equals(secVo.getErrortable())) {
-                                                sb.append("校对表错误" + mvo.getErrortable() + "与系统校对表错误" + secVo.getErrortable() + "不同,");
-                                            }
-
-                                            if (StringUtils.isNotBlank(sb.toString())) {
-                                                allStrBuilder.append("项目工号" + fm.getProjectdlprojid() + ",修改单编号" + fm.getSourcenumbercode() + ",内容序号" + mvo.getSectionsn() + "已存在,但导入的数据" + sb.toString() + "请检查<br>");
+                                            secVos = qcsMdfFormDos.stream().filter(sv -> fm.getProjectdlprojid().equals(sv.getProjectdlprojid()) && fm.getSourcenumbercode().equals(sv.getSourcenumbercode())).collect(Collectors.toList());
+                                            if (secVos.size() == 0 || maxSectionSn.get() != 0) {
+                                                maxSectionSn.getAndSet(maxSectionSn.get() + 1);
                                             } else {
-                                                sectionid = secVo.getSectionid();
-                                                maxSectionSn.getAndSet(Integer.parseInt(mvo.getSectionsn()));
+                                                maxSectionSn.getAndSet(Integer.parseInt(secVos.get(secVos.size() - 1).getSectionsn()) + 1);
                                             }
-                                        }
-                                    }
-                                    slist.get(0).setSectionsn(maxSectionSn.toString());
-
-                                    //按照排号分组
-                                    Map<String, List<ImportMdfVo>> rnoListMap = slist.stream().collect(Collectors.groupingBy(ImportMdfVo::getRowsn));
-                                    rnoListMap.forEach((rno, rlm) -> {
-                                        if (StringUtils.isNotBlank(rno)) {
-                                            Map<ImportMdfVo, List<ImportMdfVo>> difRMap = rlm.stream().collect(Collectors.groupingBy(
-                                                    m -> new ImportMdfVo(m.getContent(), rno, m.getRemark(), m.getTaskdesigndtdrawingno(), m.getMinordesigndtdrawingno(), m.getMinordesigndtpartname(), m.getDutydeptname(), m.getManday(), m.getMater(), m.getEquip(), m.getOther())
-                                            ));
-                                            difRMap.forEach((ro, rl) -> {
-                                                if (rl.size() > 1) {
-//                                                allStrBuilder.append("项目工号" + fm.getProjectdlprojid() + ",修改单编号" + fm.getSourcenumbercode() + ",排号" + rno + "有" + rlm.size() + "行,但修改内容、修改图号(任务单部件)、修改图号(次级部件)、修改图名(次级部件)、责任单位、人工、材料、设备、其他有不同,请检查<br>");
-                                                    allStrBuilder.append("项目工号" + fm.getProjectdlprojid() + ",修改单编号" + fm.getSourcenumbercode() + ",排号" + rno + "有" + rlm.size() + "行,请检查<br>");
-                                                }
-                                            });
-                                        }
-                                    });
-
-                                    if (StringUtils.isBlank(allStrBuilder.toString())) {
-                                        AtomicReference<Integer> maxRowSn = new AtomicReference<>(0);
-                                        //排号分组 空值在后,有值正序在前
-                                        Map<ImportMdfVo, List<ImportMdfVo>> rowListMap = slist.stream()
-                                                .sorted(createReverseComparator("rowsn"))
-                                                .collect(Collectors.groupingBy(
-                                                        m -> new ImportMdfVo(m.getContent(), m.getRowsn(), m.getTaskdesigndtdrawingno(), m.getMinordesigndtdrawingno(), m.getMinordesigndtpartname(), m.getDutydeptname(), m.getManday(), m.getMater(), m.getEquip(), m.getOther()),
-                                                        LinkedHashMap::new,  // 保持分组顺序
-                                                        Collectors.toList()
-                                                ));
-                                        String finalSectionid = sectionid;
-                                        rowListMap.forEach((rvo, rlist) -> {
-                                            for (int r = 0; r < rlist.size(); r++) {
-                                                String rowid = "";
-                                                String detailid = SecurityUtil.getUUID();
-                                                List<ImportMdfVo> secRowVos = qcsMdfFormDos.stream().filter(rv -> fm.getProjectdlprojid().equals(rv.getProjectdlprojid()) && fm.getSourcenumbercode().equals(rv.getSourcenumbercode()) && slist.get(0).getSectionsn().equals(rv.getSectionsn())).collect(Collectors.toList());
-                                                if (StringUtils.isBlank(rvo.getRowsn())) {
-                                                    rowid = SecurityUtil.getUUID();
-                                                    if (secRowVos.size() == 0 || maxRowSn.get() != 0) {
-                                                        maxRowSn.getAndSet(maxRowSn.get() + 1);
-                                                    } else {
-                                                        maxRowSn.getAndSet(Integer.parseInt(secRowVos.get(secRowVos.size() - 1).getRowsn()) + 1);
+                                        } else {
+                                            secVos = qcsMdfFormDos.stream().filter(sv -> fm.getProjectdlprojid().equals(sv.getProjectdlprojid()) && fm.getSourcenumbercode().equals(sv.getSourcenumbercode()) && mvo.getSectionsn().equals(sv.getSectionsn())).collect(Collectors.toList());
+                                            if (secVos.size() == 0) {
+                                                sectionid = SecurityUtil.getUUID();
+                                                maxSectionSn.getAndSet(Integer.parseInt(mvo.getSectionsn()));
+                                            } else {
+                                                ImportMdfVo secVo = secVos.get(0);
+                                                StringBuilder sb = new StringBuilder();
+                                                if (secVo.getScreateuserid().equals("0")) {
+                                                    sIsFromMdf = true;
+                                                } else {
+                                                    if (!mvo.getModifyby().equals(secVo.getModifyby())) {
+                                                        sb.append("修改责任方" + mvo.getModifyby() + "与系统修改责任方" + secVo.getModifyby() + "不同,");
+                                                    }
+                                                    if (!mvo.getErrordesigndtdrawingno().equals(secVo.getErrordesigndtdrawingno())) {
+                                                        sb.append("错误源头图号" + mvo.getErrordesigndtdrawingno() + "与系统错误源头图号" + secVo.getErrordesigndtdrawingno() + "不同,");
+                                                    }
+                                                    if (!mvo.getDtdesigner().equals(secVo.getDtdesigner())) {
+                                                        sb.append("设计人" + mvo.getDtdesigner() + "与系统设计人" + secVo.getDtdesigner() + "不同,");
+                                                    }
+                                                    if (!mvo.getDtwhocollate().equals(secVo.getDtwhocollate())) {
+                                                        sb.append("校对人" + mvo.getDtwhocollate() + "与系统校对人" + secVo.getDtwhocollate() + "不同,");
+                                                    }
+                                                    if (!mvo.getDtwhoapprove().equals(secVo.getDtwhoapprove())) {
+                                                        sb.append("审核人" + mvo.getDtwhoapprove() + "与系统审核人" + secVo.getDtwhoapprove() + "不同,");
+                                                    }
+                                                    if (!mvo.getErrorroutine().equals(secVo.getErrorroutine())) {
+                                                        sb.append("常规错误" + mvo.getErrorroutine() + "与系统常规错误" + secVo.getErrorroutine() + "不同,");
                                                     }
+                                                    if (!mvo.getErroragain().equals(secVo.getErroragain())) {
+                                                        sb.append("二过错误" + mvo.getErroragain() + "与系统二过错误" + secVo.getErroragain() + "不同,");
+                                                    }
+                                                    if (!mvo.getErrorhard().equals(secVo.getErrorhard())) {
+                                                        sb.append("较难发现错误" + mvo.getErrorhard() + "与系统较难发现错误" + secVo.getErrorhard() + "不同,");
+                                                    }
+                                                    if (!mvo.getErrortable().equals(secVo.getErrortable())) {
+                                                        sb.append("校对表错误" + mvo.getErrortable() + "与系统校对表错误" + secVo.getErrortable() + "不同,");
+                                                    }
+                                                }
+
+                                                if (StringUtils.isNotBlank(sb.toString())) {
+                                                    allStrBuilder.append("项目工号" + fm.getProjectdlprojid() + ",修改单编号" + fm.getSourcenumbercode() + ",内容序号" + mvo.getSectionsn() + "已存在,但导入的数据" + sb.toString() + "请检查<br>");
                                                 } else {
-                                                    int finalR = r;
-                                                    ImportMdfVo rowVo = qcsMdfFormDos.stream().filter(rv -> fm.getProjectdlprojid().equals(rv.getProjectdlprojid()) && fm.getSourcenumbercode().equals(rv.getSourcenumbercode()) && slist.get(0).getSectionsn().equals(rv.getSectionsn()) && rvo.getRowsn().equals(rv.getRowsn()) && rlist.get(finalR).getRemark().equals(rv.getRemark())).findAny().orElse(null);
-                                                    if (rowVo == null) {
+                                                    sectionid = secVo.getSectionid();
+                                                    maxSectionSn.getAndSet(Integer.parseInt(mvo.getSectionsn()));
+                                                }
+                                            }
+                                        }
+                                        slist.get(s).setSectionsn(maxSectionSn.toString());
+
+                                        if (StringUtils.isBlank(allStrBuilder.toString())) {
+                                            AtomicReference<Integer> maxRowSn = new AtomicReference<>(0);
+                                            //排号分组 空值在后,有值正序在前
+                                            Map<ImportMdfVo, List<ImportMdfVo>> rowListMap = slist.stream()
+                                                    .sorted(createReverseComparator("rowsn"))
+                                                    .collect(Collectors.groupingBy(
+                                                            m -> new ImportMdfVo(m.getSectionsn(), m.getContent(), m.getRowsn(), m.getRemark(), m.getTaskdesigndtdrawingno(), m.getMinordesigndtdrawingno(), m.getMinordesigndtpartname(), m.getDutydeptname(), m.getManday(), m.getMater(), m.getEquip(), m.getOther()),
+                                                            LinkedHashMap::new,  // 保持分组顺序
+                                                            Collectors.toList()
+                                                    ));
+                                            String finalSectionid = sectionid;
+                                            int finalS = s;
+                                            rowListMap.forEach((rvo, rlist) -> {
+//                                                    for (int r = 0; r < rlist.size(); r++) {
+                                                Boolean rIsFromMdf = false;//是否来自修改单系统
+                                                if (slist.get(finalS).getSectionsn().equals(rvo.getSectionsn())) {
+                                                    String rowid = "";
+                                                    String detailid = SecurityUtil.getUUID();
+                                                    List<ImportMdfVo> secRowVos = qcsMdfFormDos.stream().filter(rv -> fm.getProjectdlprojid().equals(rv.getProjectdlprojid()) && fm.getSourcenumbercode().equals(rv.getSourcenumbercode()) && slist.get(finalS).getSectionsn().equals(rv.getSectionsn())).collect(Collectors.toList());
+                                                    if (StringUtils.isBlank(rvo.getRowsn())) {
                                                         rowid = SecurityUtil.getUUID();
-                                                        maxRowSn.getAndSet(Integer.parseInt(rvo.getRowsn()));
+                                                        if (secRowVos.size() == 0 || maxRowSn.get() != 0) {
+                                                            maxRowSn.getAndSet(maxRowSn.get() + 1);
+                                                        } else {
+                                                            maxRowSn.getAndSet(Integer.parseInt(secRowVos.get(secRowVos.size() - 1).getRowsn()) + 1);
+                                                        }
                                                     } else {
+//                                                            int finalR = r;
+                                                        List<ImportMdfVo> rowVos = qcsMdfFormDos.stream().filter(rv -> fm.getProjectdlprojid().equals(rv.getProjectdlprojid()) && fm.getSourcenumbercode().equals(rv.getSourcenumbercode()) && slist.get(finalS).getSectionsn().equals(rv.getSectionsn()) && rvo.getRowsn().equals(rv.getRowsn()) && rlist.get(0).getRemark().equals(rv.getRemark())).collect(Collectors.toList());
+                                                        if (rowVos.size() == 0) {
+                                                            rowVos = qcsMdfFormDos.stream().filter(rv -> fm.getProjectdlprojid().equals(rv.getProjectdlprojid()) && fm.getSourcenumbercode().equals(rv.getSourcenumbercode()) && slist.get(finalS).getSectionsn().equals(rv.getSectionsn()) && rvo.getRowsn().equals(rv.getRowsn())).collect(Collectors.toList());
+                                                        }
+                                                        ImportMdfVo rowVo = rowVos.stream().filter(ro -> unitId.equals(ro.getDeptid())).findAny().orElse(null);
+                                                        if (rowVo == null) {
+                                                            rowid = SecurityUtil.getUUID();
+                                                            maxRowSn.getAndSet(Integer.parseInt(rvo.getRowsn()));
+                                                        } else {
 //                                                        if (!rlist.get(r).getRemark().equals(rowVo.getRemark())) {
 //                                                            rowid = SecurityUtil.getUUID();
 //                                                            maxRowSn.getAndSet(Integer.parseInt(rvo.getRowsn()) + 1);
 //                                                        } else {
-                                                        if (rowVo.getStatus().equals("已提交") && rowVo.getDeptid().equals(unitId)) {
-                                                            allStrBuilder.append("项目工号" + fm.getProjectdlprojid() + ",修改单编号" + fm.getSourcenumbercode() + ",内容序号" + mvo.getSectionsn() + ",排号" + rvo.getRowsn() + "数据已提交,请检查<br>");
-                                                        } else {
-                                                            StringBuilder sb = new StringBuilder();
-                                                            if (!rvo.getContent().equals(rowVo.getContent())) {
-                                                                sb.append("修改内容" + rvo.getContent() + "与系统修改内容" + rowVo.getContent() + "不同,");
-                                                            }
-                                                            if (!rvo.getTaskdesigndtdrawingno().equals(rowVo.getTaskdesigndtdrawingno())) {
-                                                                sb.append("修改图号(任务单部件)" + rvo.getTaskdesigndtdrawingno() + "与系统修改图号(任务单部件)" + rowVo.getTaskdesigndtdrawingno() + "不同,");
-                                                            }
-                                                            if (!rvo.getMinordesigndtdrawingno().equals(rowVo.getMinordesigndtdrawingno())) {
-                                                                sb.append("修改图号(次级部件)" + rvo.getMinordesigndtdrawingno() + "与系统修改图号(次级部件)" + rowVo.getMinordesigndtdrawingno() + "不同,");
-                                                            }
-                                                            if (!rvo.getMinordesigndtpartname().equals(rowVo.getMinordesigndtpartname())) {
-                                                                sb.append("修改图名(次级部件)" + rvo.getMinordesigndtpartname() + "与系统修改图名(次级部件)" + rowVo.getMinordesigndtpartname() + "不同,");
-                                                            }
-
-                                                            if (StringUtils.isNotBlank(sb.toString())) {
-                                                                allStrBuilder.append("项目工号" + fm.getProjectdlprojid() + ",修改单编号" + fm.getSourcenumbercode() + ",内容序号" + mvo.getSectionsn() + ",排号" + rvo.getRowsn() + "已存在,但导入的数据" + sb.toString() + "请检查<br>");
+                                                            if (rowVo.getStatus().equals("已提交")) {
+                                                                allStrBuilder.append("项目工号" + fm.getProjectdlprojid() + ",修改单编号" + fm.getSourcenumbercode() + ",内容序号" + mvo.getSectionsn() + ",排号" + rvo.getRowsn() + "数据已提交,请检查<br>");
                                                             } else {
-                                                                rowid = rowVo.getRowid();
-                                                                if (rowVo.getDeptid().equals(unitId)) {
-                                                                    detailid = rowVo.getDetailid();
+                                                                StringBuilder sb = new StringBuilder();
+                                                                if (rowVo.getRcreateuserid().equals("0")) {
+                                                                    rIsFromMdf = true;
+                                                                } else {
+                                                                    if (!rvo.getContent().equals(rowVo.getContent())) {
+                                                                        sb.append("修改内容" + rvo.getContent() + "与系统修改内容" + rowVo.getContent() + "不同,");
+                                                                    }
+                                                                    if (!rvo.getTaskdesigndtdrawingno().equals(rowVo.getTaskdesigndtdrawingno())) {
+                                                                        sb.append("修改图号(任务单部件)" + rvo.getTaskdesigndtdrawingno() + "与系统修改图号(任务单部件)" + rowVo.getTaskdesigndtdrawingno() + "不同,");
+                                                                    }
+                                                                    if (!rvo.getMinordesigndtdrawingno().equals(rowVo.getMinordesigndtdrawingno())) {
+                                                                        sb.append("修改图号(次级部件)" + rvo.getMinordesigndtdrawingno() + "与系统修改图号(次级部件)" + rowVo.getMinordesigndtdrawingno() + "不同,");
+                                                                    }
+                                                                    if (!rvo.getMinordesigndtpartname().equals(rowVo.getMinordesigndtpartname())) {
+                                                                        sb.append("修改图名(次级部件)" + rvo.getMinordesigndtpartname() + "与系统修改图名(次级部件)" + rowVo.getMinordesigndtpartname() + "不同,");
+                                                                    }
+                                                                }
+
+                                                                if (StringUtils.isNotBlank(sb.toString())) {
+                                                                    allStrBuilder.append("项目工号" + fm.getProjectdlprojid() + ",修改单编号" + fm.getSourcenumbercode() + ",内容序号" + mvo.getSectionsn() + ",排号" + rvo.getRowsn() + "已存在,但导入的数据" + sb.toString() + "请检查<br>");
+                                                                } else {
+                                                                    rowid = rowVo.getRowid();
+                                                                    if (rowVo.getDeptid().equals(unitId)) {
+                                                                        detailid = rowVo.getDetailid();
+                                                                    }
+                                                                    maxRowSn.getAndSet(Integer.parseInt(rvo.getRowsn()));
                                                                 }
-                                                                maxRowSn.getAndSet(Integer.parseInt(rvo.getRowsn()));
                                                             }
-                                                        }
 //                                                        }
+                                                        }
                                                     }
-                                                }
-                                                rlist.get(r).setRowsn(maxRowSn.toString());
-
-                                                if (StringUtils.isBlank(allStrBuilder.toString())) {
-                                                    QcsMdfRowDo qcsMdfRowDo = BeanUtil.toBean(rlist.get(r), QcsMdfRowDo.class);
-                                                    qcsMdfRowDo.setId(rowid);
-                                                    qcsMdfRowDo.setRowsn(slist.get(0).getSectionsn() + "-" + qcsMdfRowDo.getRowsn());
-                                                    qcsMdfRowDo.setFormid(finalFormid);
-                                                    qcsMdfRowDo.setSectionid(finalSectionid);
-                                                    qcsMdfRowDo.setRoption(ropJson);
-                                                    qcsMdfRowDoList.add(qcsMdfRowDo);
-
-                                                    QcsMdfDetailDo qcsMdfDetailDo = BeanUtil.toBean(rlist.get(r), QcsMdfDetailDo.class);
-                                                    qcsMdfDetailDo.setId(detailid);
-                                                    qcsMdfDetailDo.setRowid(rowid);
-                                                    qcsMdfDetailDo.setFormid(finalFormid);
-                                                    qcsMdfDetailDo.setSectionid(finalSectionid);
-                                                    qcsMdfDetailDo.setRoption(ropJson);
-                                                    qcsMdfDetailDo.setDeptid(unitId);
-                                                    qcsMdfDetailDo.setDeptname(finalDeptName);
-                                                    qcsMdfDetailDo.setMdfreason(flist.get(0).getSourcename());
-                                                    if (rlist.get(r).getProducename().equals("未下料")) {
-                                                        qcsMdfDetailDo.setManday(null);
-                                                        qcsMdfDetailDo.setMater(null);
-                                                        qcsMdfDetailDo.setEquip(null);
-                                                        qcsMdfDetailDo.setOther(null);
-                                                    } else {
-                                                        qcsMdfDetailDo.setManday(qcsMdfDetailDo.getManday() == null ? new BigDecimal(0) : qcsMdfDetailDo.getManday());
-                                                        qcsMdfDetailDo.setMater(qcsMdfDetailDo.getMater() == null ? new BigDecimal(0) : qcsMdfDetailDo.getMater());
-                                                        qcsMdfDetailDo.setEquip(qcsMdfDetailDo.getEquip() == null ? new BigDecimal(0) : qcsMdfDetailDo.getEquip());
-                                                        qcsMdfDetailDo.setOther(qcsMdfDetailDo.getOther() == null ? new BigDecimal(0) : qcsMdfDetailDo.getOther());
-                                                        BigDecimal total = sumTotal(qcsMdfDetailDo);
-                                                        qcsMdfDetailDo.setTotalamount(total);
-                                                        qcsMdfDetailDo.setActamount(total);
-                                                    }
-                                                    if (finalResDutyList.size() > 0) {
-                                                        qcsMdfDetailDo.setDutydeptid(finalResDutyList.get(0).get("DUTYDEPTID"));
-                                                        qcsMdfDetailDo.setDutydeptname(finalResDutyList.get(0).get("DUTYDEPTNAME"));
-                                                    } else if (flist.get(0).getSourcename() != null && flist.get(0).getSourcename().equals("基地要求")) {
-                                                        qcsMdfDetailDo.setDutydeptid(unitId);
-                                                        qcsMdfDetailDo.setDutydeptname(finalDeptName);
+                                                    rlist.get(0).setRowsn(maxRowSn.toString());
+
+                                                    if (StringUtils.isBlank(allStrBuilder.toString())) {
+                                                        QcsMdfRowDo qcsMdfRowDo = new QcsMdfRowDo();
+                                                        if (rIsFromMdf) {
+                                                            qcsMdfRowDo.setId(rowid);
+                                                            qcsMdfRowDo.setRemark(rlist.get(0).getRemark());
+                                                        } else {
+                                                            qcsMdfRowDo = BeanUtil.toBean(rlist.get(0), QcsMdfRowDo.class);
+                                                            qcsMdfRowDo.setId(rowid);
+                                                            qcsMdfRowDo.setRowsn(slist.get(finalS).getSectionsn() + "-" + qcsMdfRowDo.getRowsn());
+                                                            qcsMdfRowDo.setFormid(finalFormid);
+                                                            qcsMdfRowDo.setSectionid(finalSectionid);
+                                                        }
+                                                        qcsMdfRowDo.setRoption(ropJson);
+                                                        qcsMdfRowDoList.add(qcsMdfRowDo);
+
+                                                        QcsMdfDetailDo qcsMdfDetailDo = BeanUtil.toBean(rlist.get(0), QcsMdfDetailDo.class);
+                                                        qcsMdfDetailDo.setId(detailid);
+                                                        qcsMdfDetailDo.setRowid(rowid);
+                                                        qcsMdfDetailDo.setFormid(finalFormid);
+                                                        qcsMdfDetailDo.setSectionid(finalSectionid);
+                                                        qcsMdfDetailDo.setRoption(ropJson);
+                                                        qcsMdfDetailDo.setDeptid(unitId);
+                                                        qcsMdfDetailDo.setDeptname(finalDeptName);
+                                                        qcsMdfDetailDo.setMdfreason(flist.get(0).getSourcename());
+                                                        if (rlist.get(0).getProducename().equals("未下料")) {
+                                                            qcsMdfDetailDo.setManday(null);
+                                                            qcsMdfDetailDo.setMater(null);
+                                                            qcsMdfDetailDo.setEquip(null);
+                                                            qcsMdfDetailDo.setOther(null);
+                                                        } else {
+                                                            qcsMdfDetailDo.setManday(qcsMdfDetailDo.getManday() == null ? new BigDecimal(0) : qcsMdfDetailDo.getManday());
+                                                            qcsMdfDetailDo.setMater(qcsMdfDetailDo.getMater() == null ? new BigDecimal(0) : qcsMdfDetailDo.getMater());
+                                                            qcsMdfDetailDo.setEquip(qcsMdfDetailDo.getEquip() == null ? new BigDecimal(0) : qcsMdfDetailDo.getEquip());
+                                                            qcsMdfDetailDo.setOther(qcsMdfDetailDo.getOther() == null ? new BigDecimal(0) : qcsMdfDetailDo.getOther());
+                                                            BigDecimal total = sumTotal(qcsMdfDetailDo);
+                                                            qcsMdfDetailDo.setTotalamount(total);
+                                                            qcsMdfDetailDo.setActamount(total);
+                                                        }
+                                                        if (finalResDutyList.size() > 0) {
+                                                            qcsMdfDetailDo.setDutydeptid(finalResDutyList.get(0).get("DUTYDEPTID"));
+                                                            qcsMdfDetailDo.setDutydeptname(finalResDutyList.get(0).get("DUTYDEPTNAME"));
+                                                        } else if (flist.get(0).getSourcename() != null && flist.get(0).getSourcename().equals("基地要求")) {
+                                                            qcsMdfDetailDo.setDutydeptid(unitId);
+                                                            qcsMdfDetailDo.setDutydeptname(finalDeptName);
+                                                        }
+                                                        qcsMdfDetailDoList.add(qcsMdfDetailDo);
                                                     }
-                                                    qcsMdfDetailDoList.add(qcsMdfDetailDo);
                                                 }
-                                            }
-                                        });
-                                    }
+                                            });
+                                        }
 
-                                    if (StringUtils.isBlank(allStrBuilder.toString())) {
-                                        QcsMdfSectionDo qcsMdfSectionDo = BeanUtil.toBean(slist.get(0), QcsMdfSectionDo.class);
-                                        qcsMdfSectionDo.setId(sectionid);
-                                        qcsMdfSectionDo.setFormid(finalFormid1);
-                                        qcsMdfSectionDo.setRoption(ropJson);
-                                        qcsMdfSectionDoList.add(qcsMdfSectionDo);
+                                        if (StringUtils.isBlank(allStrBuilder.toString()) && !sIsFromMdf) {
+                                            QcsMdfSectionDo qcsMdfSectionDo = BeanUtil.toBean(slist.get(s), QcsMdfSectionDo.class);
+                                            qcsMdfSectionDo.setId(sectionid);
+                                            qcsMdfSectionDo.setFormid(finalFormid1);
+                                            qcsMdfSectionDo.setRoption(ropJson);
+                                            qcsMdfSectionDoList.add(qcsMdfSectionDo);
+                                        }
                                     }
-//                                }
-                                });
-                            }
+                                }
+                            });
+
                             if (StringUtils.isBlank(allStrBuilder.toString())) {
-                                QcsMdfFormDo qcsMdfFormDo = BeanUtil.toBean(flist.get(0), QcsMdfFormDo.class);
-                                qcsMdfFormDo.setId(formid);
-                                qcsMdfFormDo.setRoption(ropJson);
-                                if (isnew) {
-                                    qcsMdfFormDo.setBaseid(unitId);
-                                    qcsMdfFormDo.setBasename(finalDeptName1);
+                                QcsMdfFormDo qcsMdfFormDo = new QcsMdfFormDo();
+                                if (fIsFromMdf) {
+                                    qcsMdfFormDo.setId(formid);
+                                    qcsMdfFormDo.setIssend("已下发");
                                 } else {
-                                    if (StringUtils.isNotBlank(qcsMdfFormDo.getBaseid()) && !qcsMdfFormDo.getBaseid().equals(unitId)) {
-                                        if (StringUtils.isNotBlank(qcsMdfFormDo.getSharedeptids())) {
-                                            if (!Arrays.asList(qcsMdfFormDo.getSharedeptids().split(",")).contains(unitId)) {
-                                                qcsMdfFormDo.setSharedeptids(qcsMdfFormDo.getSharedeptids() + "," + unitId);
+                                    qcsMdfFormDo = BeanUtil.toBean(flist.get(0), QcsMdfFormDo.class);
+                                    qcsMdfFormDo.setId(formid);
+                                    qcsMdfFormDo.setRoption(ropJson);
+                                    if (isnew) {
+                                        qcsMdfFormDo.setBaseid(unitId);
+                                        qcsMdfFormDo.setBasename(finalDeptName1);
+                                    } else {
+                                        if (StringUtils.isNotBlank(qcsMdfFormDo.getBaseid()) && !qcsMdfFormDo.getBaseid().equals(unitId)) {
+                                            if (StringUtils.isNotBlank(qcsMdfFormDo.getSharedeptids())) {
+                                                if (!Arrays.asList(qcsMdfFormDo.getSharedeptids().split(",")).contains(unitId)) {
+                                                    qcsMdfFormDo.setSharedeptids(qcsMdfFormDo.getSharedeptids() + "," + unitId);
+                                                }
+                                            } else {
+                                                qcsMdfFormDo.setSharedeptids(unitId);
                                             }
-                                        } else {
-                                            qcsMdfFormDo.setSharedeptids(unitId);
                                         }
                                     }
+                                    qcsMdfFormDo.setDatasource("质量成本系统");
                                 }
-                                qcsMdfFormDo.setDatasource("质量成本系统");
                                 qcsMdfFormDoList.add(qcsMdfFormDo);
                                 formids.add(formid);
                             }
@@ -994,8 +1018,11 @@ public class QcsMdfFormServiceImpl extends ServiceImpl<QcsMdfFormDao, QcsMdfForm
             return R.error(allStrBuilder.toString());
         } else {
             Boolean bool1 = qcsMdfFormService.saveOrUpdateBatch(qcsMdfFormDoList);
-            Boolean bool2 = qcsMdfSectionService.saveOrUpdateBatch(qcsMdfSectionDoList);
+            Boolean bool2 = true;
             Boolean bool3 = qcsMdfRowService.saveOrUpdateBatch(qcsMdfRowDoList);
+            if (qcsMdfSectionDoList.size() > 0) {
+                bool2 = qcsMdfSectionService.saveOrUpdateBatch(qcsMdfSectionDoList);
+            }
             Boolean bool4 = qcsMdfDetailService.saveOrUpdateBatch(qcsMdfDetailDoList);
             if (bool1 && bool2 && bool3 && bool4) {
                 for (String fid : formids) {
@@ -1022,13 +1049,21 @@ public class QcsMdfFormServiceImpl extends ServiceImpl<QcsMdfFormDao, QcsMdfForm
                 Comparable val2 = (Comparable) f.get(p2);
 
                 // 两个都为null,视为相等
-                if (val1 == "" && val2 == "") return 0;
+                if (StringUtils.isBlank(val1.toString()) && StringUtils.isBlank(val2.toString())) {
+                    return 0;
+                }
                 // 只有val1为null,val2排前面
-                if (val1 == "") return 1;
+                else if (StringUtils.isBlank(val1.toString())) {
+                    return 1;
+                }
                 // 只有val2为null,val1排前面
-                if (val2 == "") return -1;
+                else if (StringUtils.isBlank(val2.toString())) {
+                    return -1;
+                }
                 // 两个都不为null,按正序排列
-                return val1.compareTo(val2);
+                else {
+                    return val1.compareTo(val2);
+                }
             } catch (Exception e) {
                 throw new RuntimeException("分组排序失败", e);
             }

+ 1 - 1
qcs-entity/src/main/java/com/rongwei/bsentity/domain/QcsMdfFormDo.java

@@ -243,7 +243,7 @@ public class QcsMdfFormDo extends BaseDo {
     @TableField("ACTAMOUNT")
     private BigDecimal actamount;
     /**
-     * 是否下发(1是0否)
+     * 是否下发
      */
     @TableField("ISSEND")
     private String issend;

+ 5 - 0
qcs-entity/src/main/java/com/rongwei/bsentity/domain/QcsMdfRowDo.java

@@ -163,6 +163,11 @@ public class QcsMdfRowDo extends BaseDo {
      */
     @TableField("ROWFILES")
     private String rowfiles;
+    /**
+     * 情况说明
+     */
+    @TableField("SITUATION")
+    private String situation;
 
 
 }

+ 7 - 16
qcs-entity/src/main/java/com/rongwei/bsentity/vo/ImportMdfVo.java

@@ -19,6 +19,7 @@ public class ImportMdfVo {
     private String producename;//项目生产阶段
     private String baseid;//一级单位ID
     private String sharedeptids;//共用修改单部门ids
+    private String fcreateuserid;
 
     private String sectionid;
     private String sectionsn;//内容序号
@@ -35,6 +36,7 @@ public class ImportMdfVo {
     private String erroragain;//二过错误
     private String errorhard;//较难发现错误
     private String errortable;//校对表错误   0:未勾选 1: 勾选
+    private String screateuserid;
 
     private String rowid;
     private String content;//修改内容
@@ -44,6 +46,7 @@ public class ImportMdfVo {
     private String taskdesigndtpartname;//修改图名(任务单部件)
     private String minordesigndtdrawingno;//修改图号(次级部件)
     private String minordesigndtpartname;//修改图名(次级部件)
+    private String rcreateuserid;
 
     private String detailid;
     private String dutydeptid;//责任单位ID
@@ -83,23 +86,9 @@ public class ImportMdfVo {
         this.errortable = errortable;
     }
 
-    //序号分组
-    public ImportMdfVo(String modifyby, String errordesigndtdrawingno, String dtdesigner, String dtwhocollate, String dtwhoapprove, String errorroutine, String erroragain, String errorhard, String errortable) {
-        this.modifyby = modifyby;
-        this.errordesigndtdrawingno = errordesigndtdrawingno;
-        this.dtdesigner = dtdesigner;
-        this.dtwhocollate = dtwhocollate;
-        this.dtwhoapprove = dtwhoapprove;
-        this.errorroutine = errorroutine;
-        this.erroragain = erroragain;
-        this.errorhard = errorhard;
-        this.errortable = errortable;
-    }
-
     //排号分组
-    public ImportMdfVo(String content, String rowsn, String remark, String taskdesigndtdrawingno, String minordesigndtdrawingno, String minordesigndtpartname, String dutydeptname, BigDecimal manday, BigDecimal mater, BigDecimal equip, BigDecimal other) {
+    public ImportMdfVo(String content, String remark, String taskdesigndtdrawingno, String minordesigndtdrawingno, String minordesigndtpartname, String dutydeptname, BigDecimal manday, BigDecimal mater, BigDecimal equip, BigDecimal other) {
         this.content = content;
-        this.rowsn = rowsn;
         this.remark = remark;
         this.taskdesigndtdrawingno = taskdesigndtdrawingno;
         this.minordesigndtdrawingno = minordesigndtdrawingno;
@@ -112,9 +101,11 @@ public class ImportMdfVo {
     }
 
     //排号明细分组
-    public ImportMdfVo(String content, String rowsn, String taskdesigndtdrawingno, String minordesigndtdrawingno, String minordesigndtpartname, String dutydeptname, BigDecimal manday, BigDecimal mater, BigDecimal equip, BigDecimal other) {
+    public ImportMdfVo(String sectionsn, String content, String rowsn, String remark, String taskdesigndtdrawingno, String minordesigndtdrawingno, String minordesigndtpartname, String dutydeptname, BigDecimal manday, BigDecimal mater, BigDecimal equip, BigDecimal other) {
+        this.sectionsn = sectionsn;
         this.content = content;
         this.rowsn = rowsn;
+        this.remark = remark;
         this.taskdesigndtdrawingno = taskdesigndtdrawingno;
         this.minordesigndtdrawingno = minordesigndtdrawingno;
         this.minordesigndtpartname = minordesigndtpartname;