Browse Source

Merge branch 'dev' of ssh://10.10.100.21/source/smartschool-platform into dev

guq 7 years ago
parent
commit
7cac98a329

+ 6 - 0
applications/device/device-server/src/main/docker/Dockerfile

@@ -0,0 +1,6 @@
+FROM frolvlad/alpine-oraclejdk8:slim
+VOLUME /tmp
+ADD device-server-1.0.0-SNAPSHOT.jar app.jar
+RUN sh -c 'touch /app.jar'
+ENV JAVA_OPTS=""
+ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /app.jar" ]

+ 10 - 10
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/basic/service/impl/CurriculumServiceImpl.java

@@ -112,21 +112,18 @@ public class CurriculumServiceImpl implements CurriculumService {
     private void convertToId(CurriculumDetailDTO curriculumDetailDTO, SubjectDO subjectDO) {
         if (curriculumDetailDTO.getMon().equals(subjectDO.getSubjectName())){
             curriculumDetailDTO.setMon(subjectDO.getSubjectId().toString());
-        }
-        if (curriculumDetailDTO.getTues().equals(subjectDO.getSubjectName())){
+        }else if (curriculumDetailDTO.getTues().equals(subjectDO.getSubjectName())){
             curriculumDetailDTO.setTues(subjectDO.getSubjectId().toString());
-        }
-        if (curriculumDetailDTO.getThur().equals(subjectDO.getSubjectName())){
+        }else if (curriculumDetailDTO.getThur().equals(subjectDO.getSubjectName())){
             curriculumDetailDTO.setThur(subjectDO.getSubjectId().toString());
-        }
-        if (curriculumDetailDTO.getWed().equals(subjectDO.getSubjectName())){
+        }else if (curriculumDetailDTO.getWed().equals(subjectDO.getSubjectName())){
             curriculumDetailDTO.setWed(subjectDO.getSubjectId().toString());
-        }
-        if (curriculumDetailDTO.getFri().equals(subjectDO.getSubjectName())){
+        }else if (curriculumDetailDTO.getFri().equals(subjectDO.getSubjectName())){
             curriculumDetailDTO.setFri(subjectDO.getSubjectId().toString());
-        }
-        if (curriculumDetailDTO.getSat().equals(subjectDO.getSubjectName())){
+        }else if (curriculumDetailDTO.getSat().equals(subjectDO.getSubjectName())){
             curriculumDetailDTO.setSat(subjectDO.getSubjectId().toString());
+        }else {
+            throw new BizException(BizExceptionCode.NOT_EXISTS_SUBJECT.getCode(), String.format(BizExceptionCode.NOT_EXISTS_SUBJECT.getMessage(), subjectDO.getSubjectName()));
         }
     }
 
@@ -202,6 +199,7 @@ public class CurriculumServiceImpl implements CurriculumService {
     }
 
     @Override
+    @Transactional
     public void saveToFormal(Integer id, boolean update){
         if (null == id || "0".equals(id)) {
             return;
@@ -243,10 +241,12 @@ public class CurriculumServiceImpl implements CurriculumService {
                         //1. 替换课程名称为ID
                         List<SubjectDO> subjectDOList = curriculumMapper.selectSubject(schoolId);
                         Iterator<CurriculumDetailDTO> detailIterator = curriculumDetailDTOList.iterator();
+                        int detno = 1;
                         while (detailIterator.hasNext()){
                             CurriculumDetailDTO curriculumDetailDTO = detailIterator.next();
                             curriculumDetailDTO.setmId(mainId);
                             curriculumDetailDTO.setStatus(1);
+                            curriculumDetailDTO.setLessons(detno++);
                             curriculumDetailDTO.setSchoolId(schoolId);
                             curriculumDetailDTO.setClazzId(clazzId);
                             subjectDOList.forEach(subjectDO -> { convertToId(curriculumDetailDTO, subjectDO); });

+ 3 - 4
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/basic/service/impl/GradeServiceImpl.java

@@ -175,14 +175,13 @@ public class GradeServiceImpl implements GradeService{
         }
         sysClazz.setClazz_status(1);
         SysGrade gradeData = sysGradeMapper.selectByPrimaryKey(sysClazz.getGrade_id());
-        String clazz_grade = gradeData.getGrade_name();
-        if(sysClazzMapper.countClazz(sysClazz.getClazz_name(),clazz_grade ) >0 ){
+        if(sysClazzMapper.countClazz(sysClazz.getClazz_name(),gradeData.getGrade_name(),gradeData.getSchool_id() ) >0 ){
             throw new BizException(BizExceptionCode.REPEAT_CLASS_NAME);
         }
 
         sysClazz.setSchool_id(gradeData.getSchool_id());
-        sysClazz.setClazz_grade(clazz_grade);
-        sysClazz.setClazz_nickname(clazz_grade+sysClazz.getClazz_name());
+        sysClazz.setClazz_grade(gradeData.getGrade_name());
+        sysClazz.setClazz_nickname(gradeData.getGrade_name()+sysClazz.getClazz_name());
         sysClazzMapper.insertSelective(sysClazz);
         return new DocBaseDTO(sysClazz.getClazz_id());
     }

+ 10 - 7
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/basic/service/impl/TeacherServiceImpl.java

@@ -164,12 +164,10 @@ public class TeacherServiceImpl implements TeacherService{
         if (null == id || "0".equals(id)) {
             return;
         }
-        List<String> check = null;
         //教师检测
-        check = sysTeacherMapper.checkTeacher(id);
-        if (check != null) {
-            String.join("|", check);
-            throw new BizException(BizExceptionCode.TEACHERS_EXISTS_CLASS.getCode(), String.format(BizExceptionCode.TEACHERS_EXISTS_CLASS.getMessage(), String.join("|", check)));
+        int count = sysTeacherMapper.checkTeacher(id);
+        if (count > 0) {
+            throw new BizException(BizExceptionCode.EXISTS_TEACHER_CLASS);
         }
         sysTeacherMapper.deleteByPrimaryKey(id);
         sysTeacherMapper.deleteRelation(id);
@@ -181,9 +179,14 @@ public class TeacherServiceImpl implements TeacherService{
                 baseDTOs.getBaseDTOs().size() == 0) {
             return;
         }
-
+        StringBuilder sb = new StringBuilder();
         for (DocBaseDTO base : baseDTOs.getBaseDTOs()) {
-            delete(base.getId());
+            try {
+                delete(base.getId());
+            }catch (Exception e){
+                sb.append(sysTeacherMapper.selectByPrimaryKey(base.getId()).getTeacher_name() + "|");
+            }
         }
+        throw new BizException(BizExceptionCode.TEACHERS_EXISTS_CLASS.getCode(), String.format(BizExceptionCode.TEACHERS_EXISTS_CLASS.getMessage(), sb.substring(0, sb.length() - 1)));
     }
 }

+ 2 - 1
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/exception/BizExceptionCode.java

@@ -27,7 +27,8 @@ public enum BizExceptionCode implements BaseExceptionCode {
     REPEAT_GRADE_NAME(600001, "年级名称重复"),
     REPEAT_CLASS_NAME(600002, "班级名称重复"),
     REPEAT_STUDENT_NUMBER(600003, "学生学号不可重复"),
-    EFFECTIVE_CLASS_DATA(600004, "无法删除有学生的班级");
+    EFFECTIVE_CLASS_DATA(600004, "无法删除有学生的班级"),
+    NOT_EXISTS_SUBJECT(60005, "科目<u>%s</u>不存在");
 
 
     private int code;

+ 1 - 1
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/mapper/SysClazzMapper.java

@@ -33,5 +33,5 @@ public interface SysClazzMapper {
 
     List<SysClazz> selectByClazz(@Param("condition") String condition, @Param("school_id") Long schoolId);
 
-    int countClazz(@Param("clazz_name") String clazz_name, @Param("clazz_grade") String clazz_grade);
+    int countClazz(@Param("clazz_name") String clazz_name, @Param("clazz_grade") String clazz_grade, @Param("school_id") Long school_id);
 }

+ 1 - 1
applications/school/school-server/src/main/java/com/usoftchina/smartschool/school/mapper/SysTeacherMapper.java

@@ -39,5 +39,5 @@ public interface SysTeacherMapper {
 
     SysTeacher selectNumberByKey(String teacher_number);
 
-    List<String> checkTeacher(Long id);
+    int checkTeacher(Long id);
 }

+ 3 - 0
applications/school/school-server/src/main/resources/mapper/SysClazzMapper.xml

@@ -242,6 +242,9 @@
       <if test="clazz_grade != null">
         and clazz_grade=#{clazz_grade}
       </if>
+      <if test="school_id != null">
+        and school_id=#{school_id}
+      </if>
     </where>
   </select>
 

+ 2 - 2
applications/school/school-server/src/main/resources/mapper/SysTeacherMapper.xml

@@ -395,7 +395,7 @@ where sys_teacher_clazz.teacher_id=#{id}
     where teacher_number = #{teacher_number,jdbcType=VARCHAR}
   </select>
 
-  <select id="checkTeacher" parameterType="long" resultType="List">
-    select teacher_name from sys_teacher_clazz where  teacher_id= #{id}
+  <select id="checkTeacher" parameterType="long" resultType="int">
+    select count(*) from sys_teacher_clazz where  teacher_id= #{id}
   </select>
 </mapper>

+ 139 - 134
frontend/pc-web/app/view/Interaction/timetable/Detail.js

@@ -111,7 +111,7 @@ Ext.define('school.view.interaction.timetable.Detail', {
                     let o1, o2;
                     o1 = [(year - 1) + '-' + year];
                     o2 = [year + '-' + (year + 1)];
-                    return (month < 9) ? o1 : o2
+                    return (month < 9) ? o1[0] : o2[0]
                 })()
             }, {
                 xtype: "combobox",
@@ -174,150 +174,150 @@ Ext.define('school.view.interaction.timetable.Detail', {
                     text: 'id',
                     dataIndex: 'id',
                     hidden: true
-                }, {
-                    text: '时间段',
-                    xtype: 'widgetcolumn',
-                    width: 200,
-                    padding: 0,
-                    tdCls: 'x-period-column',
-                    getBindField: function(c) {
-                        return ['startTime', 'endTime']
-                    },
-                    widget: {
-                        xtype: 'container',
-                        style: {
-                            textAlign: 'center'
-                        },
-                        items: [{
-                            xtype: 'button',
-                            bind: {
-                                text: '{record._timeText1}',
-                            },
-                            style: {
-                                margin: '5px',
-                                height: '22px',
-                                width: '74px',
-                                padding: 0
-                            },
-                            handler: function(btn) {
-                                let record = btn.ownerCt.$widgetRecord;
-                                let store = record.store;
-                                let idx = record.get('lessons') - 2;
-                                let preRecord, preDate;
+                // }, {
+                //     text: '时间段',
+                //     xtype: 'widgetcolumn',
+                //     width: 200,
+                //     padding: 0,
+                //     tdCls: 'x-period-column',
+                //     getBindField: function(c) {
+                //         return ['startTime', 'endTime']
+                //     },
+                //     widget: {
+                //         xtype: 'container',
+                //         style: {
+                //             textAlign: 'center'
+                //         },
+                //         items: [{
+                //             xtype: 'button',
+                //             bind: {
+                //                 text: '{record._timeText1}',
+                //             },
+                //             style: {
+                //                 margin: '5px',
+                //                 height: '22px',
+                //                 width: '74px',
+                //                 padding: 0
+                //             },
+                //             handler: function(btn) {
+                //                 let record = btn.ownerCt.$widgetRecord;
+                //                 let store = record.store;
+                //                 let idx = record.get('lessons') - 2;
+                //                 let preRecord, preDate;
 
-                                if(idx > -1) {
-                                    preRecord = store.getAt(idx);
-                                    preDate = preRecord.get('_time2');
+                //                 if(idx > -1) {
+                //                     preRecord = store.getAt(idx);
+                //                     preDate = preRecord.get('_time2');
 
-                                    if(!!preDate && Ext.Date.format(preDate, 'H:i') != '00:00' && Ext.Date.add(preDate, Ext.Date.MINUTE, me.BREAK_TIME) <= Ext.Date.parse(Ext.Date.format(preDate, 'Y-m-d') + ' 22:00:00', 'Y-m-d H:i:s')) {
-                                        record.set('startTime', Ext.Date.format(Ext.Date.add(preDate, Ext.Date.MINUTE, me.BREAK_TIME), 'H:i:s'));
-                                    }
-                                }
+                //                     if(!!preDate && Ext.Date.format(preDate, 'H:i') != '00:00' && Ext.Date.add(preDate, Ext.Date.MINUTE, me.BREAK_TIME) <= Ext.Date.parse(Ext.Date.format(preDate, 'Y-m-d') + ' 22:00:00', 'Y-m-d H:i:s')) {
+                //                         record.set('startTime', Ext.Date.format(Ext.Date.add(preDate, Ext.Date.MINUTE, me.BREAK_TIME), 'H:i:s'));
+                //                     }
+                //                 }
                                 
-                                me.currentRecord = record;
-                            },
-                            menu: {
-                                xtype: 'menu',
-                                plain: true,
-                                items: [{
-                                    xtype: 'timepicker',
-                                    maxHeight: 300,
-                                    increment: 5,
-                                    format: 'H:i',
-                                    minValue: me.START_TIME,
-                                    maxValue: me.END_TIME,
-                                    listeners: {
-                                        select: function(model, record, index, eOpts) {
-                                            me.onSelectPeriod0(this, this.up(), record);
-                                        },
-                                    }
-                                }],
-                                listeners: {
-                                    beforeshow: function(th, eOpts) {
-                                        let record = th.ownerCmp.ownerCt.$widgetRecord
-                                        let picker = th.down('timepicker');
-                                        let store = th.ownerCmp.ownerCt.$widgetRecord.store;
-                                        let idx = record.get('lessons') - 2;
-                                        let preRecord, preDate, minValue;
+                //                 me.currentRecord = record;
+                //             },
+                //             menu: {
+                //                 xtype: 'menu',
+                //                 plain: true,
+                //                 items: [{
+                //                     xtype: 'timepicker',
+                //                     maxHeight: 300,
+                //                     increment: 5,
+                //                     format: 'H:i',
+                //                     minValue: me.START_TIME,
+                //                     maxValue: me.END_TIME,
+                //                     listeners: {
+                //                         select: function(model, record, index, eOpts) {
+                //                             me.onSelectPeriod0(this, this.up(), record);
+                //                         },
+                //                     }
+                //                 }],
+                //                 listeners: {
+                //                     beforeshow: function(th, eOpts) {
+                //                         let record = th.ownerCmp.ownerCt.$widgetRecord
+                //                         let picker = th.down('timepicker');
+                //                         let store = th.ownerCmp.ownerCt.$widgetRecord.store;
+                //                         let idx = record.get('lessons') - 2;
+                //                         let preRecord, preDate, minValue;
                                         
-                                        me.currentRecord = record;
+                //                         me.currentRecord = record;
 
-                                        if(idx > -1) {
-                                            preRecord = store.getAt(idx);
-                                            preDate = preRecord.get('_time2');
-                                            if(Ext.Date.format(preDate, 'H:i') == '00:00') {
-                                                school.util.BaseUtil.showErrorToast('请先完成上一课时设置');
-                                                return false;
-                                            }
-                                            if(Ext.Date.add(preDate, Ext.Date.MINUTE, me.BREAK_TIME) >= Ext.Date.parse(Ext.Date.format(preDate, 'Y-m-d') + ' 22:00:00', 'Y-m-d H:i:s')) {
-                                                school.util.BaseUtil.showErrorToast('可用课程时间不足(08:00~22:00)');
-                                            }
-                                            minValue = Ext.Date.add(preDate, Ext.Date.MINUTE, me.MIN_BREAK_TIME);
-                                        }else {
-                                            minValue = Ext.Date.parse('08:00', 'H:i');
-                                        }
+                //                         if(idx > -1) {
+                //                             preRecord = store.getAt(idx);
+                //                             preDate = preRecord.get('_time2');
+                //                             if(Ext.Date.format(preDate, 'H:i') == '00:00') {
+                //                                 school.util.BaseUtil.showErrorToast('请先完成上一课时设置');
+                //                                 return false;
+                //                             }
+                //                             if(Ext.Date.add(preDate, Ext.Date.MINUTE, me.BREAK_TIME) >= Ext.Date.parse(Ext.Date.format(preDate, 'Y-m-d') + ' 22:00:00', 'Y-m-d H:i:s')) {
+                //                                 school.util.BaseUtil.showErrorToast('可用课程时间不足(08:00~22:00)');
+                //                             }
+                //                             minValue = Ext.Date.add(preDate, Ext.Date.MINUTE, me.MIN_BREAK_TIME);
+                //                         }else {
+                //                             minValue = Ext.Date.parse('08:00', 'H:i');
+                //                         }
 
-                                        picker.setMinValue(minValue)
-                                    },
-                                }
-                            },
-                        }, {
-                            xtype: 'button',
-                            bind: {
-                                text: '{record._timeText2}',
-                            },
-                            style: {
-                                margin: '5px',
-                                height: '22px',
-                                width: '74px',
-                                padding: 0
-                            },
-                            handler: function(btn) {
-                                let record = btn.ownerCt.$widgetRecord;
-                                let startDate = record.get('_time1');
+                //                         picker.setMinValue(minValue)
+                //                     },
+                //                 }
+                //             },
+                //         }, {
+                //             xtype: 'button',
+                //             bind: {
+                //                 text: '{record._timeText2}',
+                //             },
+                //             style: {
+                //                 margin: '5px',
+                //                 height: '22px',
+                //                 width: '74px',
+                //                 padding: 0
+                //             },
+                //             handler: function(btn) {
+                //                 let record = btn.ownerCt.$widgetRecord;
+                //                 let startDate = record.get('_time1');
                                 
-                                if(Ext.Date.format(startDate, 'H:i') != '00:00' && Ext.Date.add(startDate, Ext.Date.MINUTE, me.CLASS_TIME) <= Ext.Date.parse(Ext.Date.format(startDate, 'Y-m-d') + ' 22:00:00', 'Y-m-d H:i:s')) {
-                                    record.set('endTime', Ext.Date.format(Ext.Date.add(startDate, Ext.Date.MINUTE, me.CLASS_TIME), 'H:i:s'));
-                                }
+                //                 if(Ext.Date.format(startDate, 'H:i') != '00:00' && Ext.Date.add(startDate, Ext.Date.MINUTE, me.CLASS_TIME) <= Ext.Date.parse(Ext.Date.format(startDate, 'Y-m-d') + ' 22:00:00', 'Y-m-d H:i:s')) {
+                //                     record.set('endTime', Ext.Date.format(Ext.Date.add(startDate, Ext.Date.MINUTE, me.CLASS_TIME), 'H:i:s'));
+                //                 }
 
-                                me.currentRecord = record;
-                            },
-                            menu: {
-                                xtype: 'menu',
-                                plain: true,
-                                items: [{
-                                    xtype: 'timepicker',
-                                    maxHeight: 300,
-                                    increment: 5,
-                                    format: 'H:i',
-                                    minValue: me.START_TIME,
-                                    maxValue: me.END_TIME,
-                                    listeners: {
-                                        select: function(model, record, index, eOpts) {
-                                            me.onSelectPeriod1(this, this.up(), record);
-                                        },
-                                    }
-                                }],
-                                listeners: {
-                                    beforeshow: function(th, eOpts) {
-                                        let record = th.ownerCmp.ownerCt.$widgetRecord;
-                                        let picker = th.down('timepicker');
+                //                 me.currentRecord = record;
+                //             },
+                //             menu: {
+                //                 xtype: 'menu',
+                //                 plain: true,
+                //                 items: [{
+                //                     xtype: 'timepicker',
+                //                     maxHeight: 300,
+                //                     increment: 5,
+                //                     format: 'H:i',
+                //                     minValue: me.START_TIME,
+                //                     maxValue: me.END_TIME,
+                //                     listeners: {
+                //                         select: function(model, record, index, eOpts) {
+                //                             me.onSelectPeriod1(this, this.up(), record);
+                //                         },
+                //                     }
+                //                 }],
+                //                 listeners: {
+                //                     beforeshow: function(th, eOpts) {
+                //                         let record = th.ownerCmp.ownerCt.$widgetRecord;
+                //                         let picker = th.down('timepicker');
 
-                                        if(Ext.Date.format(record.get('_time1'), 'H:i') == '00:00') {
-                                            school.util.BaseUtil.showErrorToast('请先设置开始时间');
-                                            return false;
-                                        }
+                //                         if(Ext.Date.format(record.get('_time1'), 'H:i') == '00:00') {
+                //                             school.util.BaseUtil.showErrorToast('请先设置开始时间');
+                //                             return false;
+                //                         }
 
-                                        let startDate = record.get('_time1') || Ext.Date.parse('08:00', 'H:i');
-                                        let minValue = Ext.Date.add(startDate, Ext.Date.MINUTE, me.MIN_MIN_WHILE);
-                                        me.currentRecord = record;
+                //                         let startDate = record.get('_time1') || Ext.Date.parse('08:00', 'H:i');
+                //                         let minValue = Ext.Date.add(startDate, Ext.Date.MINUTE, me.MIN_MIN_WHILE);
+                //                         me.currentRecord = record;
 
-                                        picker.setMinValue(minValue)
-                                    },
-                                }
-                            },
-                        }]
-                    }
+                //                         picker.setMinValue(minValue)
+                //                     },
+                //                 }
+                //             },
+                //         }]
+                //     }
                 }, {
                     text: '星期一',
                     dataIndex: 'mon',
@@ -350,6 +350,11 @@ Ext.define('school.view.interaction.timetable.Detail', {
                     hidden: true
                 }]
             }],
+            // toolBtns: [{
+            //     xtype: 'button',
+            //     text: '发布',
+            //     handler: 'onPublish'
+            // }]
         });
         this.callParent();
     },

+ 1 - 1
frontend/pc-web/app/view/Interaction/timetable/List.js

@@ -80,7 +80,7 @@ Ext.define('school.view.interaction.timetable.List', {
                     let o1, o2;
                     o1 = [(year - 1) + '-' + year];
                     o2 = [year + '-' + (year + 1)];
-                    return (month < 9) ? o1 : o2
+                    return (month < 9) ? o1[0] : o2[0]
                 })()
             }, {
                 xtype: "combobox",

+ 1 - 1
frontend/pc-web/overrides/form/field/TextField.js → frontend/pc-web/overrides/form/field/Text.js

@@ -1,4 +1,4 @@
-Ext.define('school.override.form.field.TextField', {
+Ext.define('school.override.form.field.Text', {
     override: 'Ext.form.field.Text',
     maxLength: 50
 

+ 5 - 0
frontend/pc-web/overrides/form/field/TextArea.js

@@ -0,0 +1,5 @@
+Ext.define('school.override.form.field.TextArea', {
+    override: 'Ext.form.field.TextArea',
+    maxLength: 500
+
+});