فهرست منبع

Merge remote-tracking branch 'origin/dev' into dev

大数据与最优化研究所 9 ماه پیش
والد
کامیت
43c8160615

+ 2 - 40
src/main/java/com/xjrsoft/module/base/controller/BaseClassController.java

@@ -1,12 +1,8 @@
 package com.xjrsoft.module.base.controller;
 
 import cn.dev33.satoken.annotation.SaCheckPermission;
-import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.bean.BeanUtil;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.xjrsoft.common.enums.DeleteMark;
-import com.xjrsoft.common.enums.EnabledMark;
 import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.page.PageOutput;
@@ -17,8 +13,6 @@ import com.xjrsoft.module.base.entity.BaseClass;
 import com.xjrsoft.module.base.service.IBaseClassService;
 import com.xjrsoft.module.base.vo.BaseClassPageVo;
 import com.xjrsoft.module.base.vo.BaseClassVo;
-import com.xjrsoft.module.student.entity.BaseClassMajorSet;
-import com.xjrsoft.module.student.service.IBaseClassMajorSetService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
@@ -32,7 +26,6 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
-import java.util.Date;
 import java.util.List;
 
 /**
@@ -47,7 +40,6 @@ import java.util.List;
 @AllArgsConstructor
 public class BaseClassController {
     private final IBaseClassService baseClassService;
-    private final IBaseClassMajorSetService majorSetService;
 
     @GetMapping(value = "/page")
     @ApiOperation(value="班级列表(分页)")
@@ -81,21 +73,7 @@ public class BaseClassController {
     @ApiOperation(value = "新增班级")
     @SaCheckPermission("baseclass:add")
     public RT<Boolean> add(@Valid @RequestBody AddBaseClassPageDto dto){
-        BaseClass baseClass = BeanUtil.toBean(dto, BaseClass.class);
-        baseClass.setDeleteMark(DeleteMark.NODELETE.getCode());
-        baseClass.setCreateDate(new Date());
-        baseClass.setEnabledMark(EnabledMark.ENABLED.getCode());
-        baseClass.setCreateUserId(StpUtil.getLoginIdAsLong());
-        boolean isSuccess = baseClassService.save(baseClass);
-
-        if(isSuccess){
-            BaseClassMajorSet majorSet = new BaseClassMajorSet();
-            majorSet.setClassId(baseClass.getId());
-            majorSet.setMajorSetId(dto.getMajorSetId());
-            majorSet.setCreateDate(new Date());
-            majorSetService.save(majorSet);
-        }
-        return RT.ok(isSuccess);
+        return RT.ok(baseClassService.addClass(dto));
     }
 
 
@@ -103,23 +81,7 @@ public class BaseClassController {
     @ApiOperation(value = "修改班级")
     @SaCheckPermission("baseclass:edit")
     public RT<Boolean> update(@Valid @RequestBody UpdateBaseClassPageDto dto){
-        BaseClass baseClass = BeanUtil.toBean(dto, BaseClass.class);
-        baseClass.setModifyDate(new Date());
-        baseClass.setModifyUserId(StpUtil.getLoginIdAsLong());
-        boolean update = baseClassService.updateById(baseClass);
-        if(update){
-            BaseClassMajorSet majorSet = majorSetService.getOne(
-                    new QueryWrapper<BaseClassMajorSet>().lambda()
-                            .eq(BaseClassMajorSet::getClassId, baseClass.getId())
-            );
-            if(majorSet != null){
-                majorSet.setClassId(baseClass.getId());
-                majorSet.setMajorSetId(dto.getMajorSetId());
-                majorSet.setModifyDate(new Date());
-                majorSetService.updateById(majorSet);
-            }
-        }
 
-        return RT.ok(update);
+        return RT.ok(baseClassService.updateClass(dto));
     }
 }

+ 6 - 0
src/main/java/com/xjrsoft/module/base/service/IBaseClassService.java

@@ -4,7 +4,9 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseService;
 import com.xjrsoft.module.attendance.dto.AttendanceStatisticDto;
 import com.xjrsoft.module.attendance.vo.ClassStatisticsVo;
+import com.xjrsoft.module.base.dto.AddBaseClassPageDto;
 import com.xjrsoft.module.base.dto.BaseClassPageDto;
+import com.xjrsoft.module.base.dto.UpdateBaseClassPageDto;
 import com.xjrsoft.module.base.entity.BaseClass;
 import com.xjrsoft.module.base.vo.BaseClassPageVo;
 import com.xjrsoft.module.base.vo.StudentClassVo;
@@ -24,4 +26,8 @@ public interface IBaseClassService extends MPJBaseService<BaseClass> {
 
 
     Long getIdByTeacherId(Long teacherId);
+
+    Boolean addClass(AddBaseClassPageDto dto);
+
+    Boolean updateClass(UpdateBaseClassPageDto dto);
 }

+ 152 - 1
src/main/java/com/xjrsoft/module/base/service/impl/BaseClassServiceImpl.java

@@ -1,31 +1,47 @@
 package com.xjrsoft.module.base.service.impl;
 
+import cn.dev33.satoken.stp.StpUtil;
+import cn.hutool.core.bean.BeanUtil;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.base.MPJBaseServiceImpl;
 import com.github.yulichang.wrapper.MPJLambdaWrapper;
+import com.xjrsoft.common.constant.GlobalConstant;
 import com.xjrsoft.common.enums.DeleteMark;
 import com.xjrsoft.common.enums.EnabledMark;
+import com.xjrsoft.common.enums.RoleEnum;
+import com.xjrsoft.common.exception.MyException;
+import com.xjrsoft.common.utils.RedisUtil;
 import com.xjrsoft.module.attendance.dto.AttendanceStatisticDto;
 import com.xjrsoft.module.attendance.vo.ClassStatisticsVo;
+import com.xjrsoft.module.base.dto.AddBaseClassPageDto;
 import com.xjrsoft.module.base.dto.BaseClassPageDto;
+import com.xjrsoft.module.base.dto.UpdateBaseClassPageDto;
 import com.xjrsoft.module.base.entity.BaseClass;
 import com.xjrsoft.module.base.mapper.BaseClassMapper;
 import com.xjrsoft.module.base.service.IBaseClassService;
 import com.xjrsoft.module.base.vo.BaseClassPageVo;
 import com.xjrsoft.module.base.vo.StudentClassVo;
+import com.xjrsoft.module.organization.entity.User;
+import com.xjrsoft.module.organization.entity.UserDeptRelation;
+import com.xjrsoft.module.organization.entity.UserRoleRelation;
 import com.xjrsoft.module.organization.entity.UserStudent;
+import com.xjrsoft.module.organization.service.IUserRoleRelationService;
 import com.xjrsoft.module.organization.service.IUserStudentService;
 import com.xjrsoft.module.organization.vo.UserStudentVo;
+import com.xjrsoft.module.student.entity.BaseClassMajorSet;
 import com.xjrsoft.module.student.entity.BaseStudent;
 import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll;
 import com.xjrsoft.module.student.entity.BaseStudentUser;
+import com.xjrsoft.module.student.service.IBaseClassMajorSetService;
 import com.xjrsoft.module.teacher.entity.XjrUser;
 import lombok.AllArgsConstructor;
 import org.springframework.stereotype.Service;
 
+import java.util.Date;
 import java.util.List;
+import java.util.concurrent.CompletableFuture;
 import java.util.stream.Collectors;
 
 @Service
@@ -36,6 +52,12 @@ public class BaseClassServiceImpl extends MPJBaseServiceImpl<BaseClassMapper, Ba
 
     private final BaseClassMapper baseClassMapper;
 
+    private final IBaseClassMajorSetService majorSetService;
+
+    private final IUserRoleRelationService roleRelationService;
+
+    private final RedisUtil redisUtil;
+
     /**
      * 获取家长关联的学生 id 是家长的ID
      * @param id
@@ -126,5 +148,134 @@ public class BaseClassServiceImpl extends MPJBaseServiceImpl<BaseClassMapper, Ba
             return null;
         }
         return list.get(0).getId();
-    };
+    }
+
+    @Override
+    public Boolean addClass(AddBaseClassPageDto dto) {
+        BaseClass baseClass = BeanUtil.toBean(dto, BaseClass.class);
+        baseClass.setDeleteMark(DeleteMark.NODELETE.getCode());
+        baseClass.setCreateDate(new Date());
+        baseClass.setEnabledMark(EnabledMark.ENABLED.getCode());
+        baseClass.setCreateUserId(StpUtil.getLoginIdAsLong());
+        if(baseClass.getTeacherId() != null){
+            //查询该班主任是否是其他在读班级
+            long count = this.count(
+                    new QueryWrapper<BaseClass>().lambda()
+                            .eq(BaseClass::getIsGraduate, 1)
+                            .eq(BaseClass::getTeacherId, baseClass.getTeacherId())
+                            .eq(BaseClass::getDeleteMark, DeleteMark.NODELETE.getCode())
+                            .eq(BaseClass::getEnabledMark, EnabledMark.ENABLED.getCode())
+            );
+            if(count > 0){
+                throw new MyException("该老师已是其他在读班级班主任,无法添加");
+            }
+        }
+
+        boolean isSuccess = this.save(baseClass);
+
+        if(isSuccess){
+            BaseClassMajorSet majorSet = new BaseClassMajorSet();
+            majorSet.setClassId(baseClass.getId());
+            majorSet.setMajorSetId(dto.getMajorSetId());
+            majorSet.setCreateDate(new Date());
+            majorSetService.save(majorSet);
+            //给该老师添加班主任角色
+            if(baseClass.getTeacherId() != null){
+                long count = roleRelationService.count(
+                        new QueryWrapper<UserRoleRelation>().lambda()
+                                .eq(UserRoleRelation::getUserId, dto.getTeacherId())
+                                .eq(UserRoleRelation::getRoleId, RoleEnum.CLASSTE.getCode())
+                );
+                if(count == 0){
+                    roleRelationService.save(
+                            new UserRoleRelation(){{
+                                setRoleId(RoleEnum.CLASSTE.getCode());
+                                setUserId(dto.getTeacherId());
+                            }}
+                    );
+
+                    CompletableFuture.runAsync(() -> {
+                        List<UserRoleRelation> userRoleRelationList = roleRelationService.list(Wrappers.lambdaQuery(UserRoleRelation.class));
+                        redisUtil.set(GlobalConstant.USER_ROLE_RELATION_CACHE_KEY, userRoleRelationList);
+                    });
+                }
+            }
+        }
+        return isSuccess;
+    }
+
+    @Override
+    public Boolean updateClass(UpdateBaseClassPageDto dto) {
+        BaseClass aClass = this.getById(dto.getId());
+        //设置了班主任,需要判断新设置的班主任是否已经是其它在读班级的
+        if(dto.getTeacherId() != null && !dto.getTeacherId().equals(aClass.getTeacherId())){
+            long count = this.count(
+                    new QueryWrapper<BaseClass>().lambda()
+                            .eq(BaseClass::getIsGraduate, 1)
+                            .eq(BaseClass::getTeacherId, dto.getTeacherId())
+                            .eq(BaseClass::getDeleteMark, DeleteMark.NODELETE.getCode())
+                            .eq(BaseClass::getEnabledMark, EnabledMark.ENABLED.getCode())
+                            .ne(BaseClass::getId, dto.getId())
+            );
+            if(count > 0){
+                throw new MyException("该老师已是其他在读班级班主任,无法添加");
+            }
+        }
+
+        BaseClass baseClass = BeanUtil.toBean(dto, BaseClass.class);
+        baseClass.setModifyDate(new Date());
+        baseClass.setModifyUserId(StpUtil.getLoginIdAsLong());
+        boolean update = this.updateById(baseClass);
+        if(update){
+            BaseClassMajorSet majorSet = majorSetService.getOne(
+                    new QueryWrapper<BaseClassMajorSet>().lambda()
+                            .eq(BaseClassMajorSet::getClassId, baseClass.getId())
+            );
+            if(majorSet != null){
+                majorSet.setClassId(baseClass.getId());
+                majorSet.setMajorSetId(dto.getMajorSetId());
+                majorSet.setModifyDate(new Date());
+                majorSetService.updateById(majorSet);
+            }
+            if(baseClass.getTeacherId() != null){
+                long count = roleRelationService.count(
+                        new QueryWrapper<UserRoleRelation>().lambda()
+                                .eq(UserRoleRelation::getUserId, dto.getTeacherId())
+                                .eq(UserRoleRelation::getRoleId, RoleEnum.CLASSTE.getCode())
+                );
+                if(count == 0){
+                    roleRelationService.save(
+                            new UserRoleRelation(){{
+                                setRoleId(RoleEnum.CLASSTE.getCode());
+                                setUserId(dto.getTeacherId());
+                            }}
+                    );
+                }
+            }
+
+            if(baseClass.getTeacherId() == null && aClass.getTeacherId() != null){
+                long count = this.count(
+                        new QueryWrapper<BaseClass>().lambda()
+                                .eq(BaseClass::getIsGraduate, 1)
+                                .eq(BaseClass::getTeacherId, aClass.getTeacherId())
+                                .eq(BaseClass::getDeleteMark, DeleteMark.NODELETE.getCode())
+                                .eq(BaseClass::getEnabledMark, EnabledMark.ENABLED.getCode())
+                                .ne(BaseClass::getId, dto.getId())
+                );
+                if(count == 0){
+                    roleRelationService.remove(
+                            new QueryWrapper<UserRoleRelation>().lambda()
+                                    .eq(UserRoleRelation::getUserId, aClass.getTeacherId())
+                                    .eq(UserRoleRelation::getRoleId, RoleEnum.CLASSTE.getCode())
+                    );
+                }
+            }
+            CompletableFuture.runAsync(() -> {
+                List<UserRoleRelation> userRoleRelationList = roleRelationService.list(Wrappers.lambdaQuery(UserRoleRelation.class));
+                redisUtil.set(GlobalConstant.USER_ROLE_RELATION_CACHE_KEY, userRoleRelationList);
+            });
+        }
+        return update;
+    }
+
 }

+ 1 - 1
src/main/java/com/xjrsoft/module/job/JianyuekbScheduleTask.java

@@ -293,7 +293,7 @@ public class JianyuekbScheduleTask {
             CourseReceiveMsg receiveMsg = receiveMsgService.getById(courseReceiveMsgId);
             JianyueData jianyueData = jianyueDataService.getOne(
                     new QueryWrapper<JianyueData>().lambda()
-                            .eq(JianyueData::getSourceId, receiveMsg.getEduYearSerialNo())
+                            .eq(JianyueData::getJianyueId, receiveMsg.getEduYearSerialNo())
             );
             String[] sourceId = jianyueData.getSourceId().split("_");
             Department department = departmentService.getById(sourceId[0]);

+ 2 - 2
src/main/java/com/xjrsoft/module/student/vo/StudentReportRecordExcelVo.java

@@ -46,8 +46,8 @@ public class StudentReportRecordExcelVo {
     @ApiModelProperty("手机号")
     private String mobile;
 
-    @ExcelProperty("学生来源")
-    @ApiModelProperty("学生来源")
+    @ExcelProperty("学生类别")
+    @ApiModelProperty("学生类别")
     private String studentTypeCn;
 
     @ExcelProperty("就读方式")

+ 2 - 2
src/main/java/com/xjrsoft/module/system/controller/DictionarydetailController.java

@@ -170,7 +170,7 @@ public class DictionarydetailController {
         if(dictionaryItem!=null) {
             if ("job_state".equals(dictionaryItem.getCode())) {
                 Integer isNormal = 1;
-                if (dictionaryDetail.getExtendField1().equals("0")) {
+                if ("0".equals(dictionaryDetail.getExtendField1())) {
                     isNormal = 0;
                 }
                 teacherbaseManagerService.changeIsNormal(dictionaryDetail.getCode(), isNormal);
@@ -178,7 +178,7 @@ public class DictionarydetailController {
 
             if("archives_status".equals(dictionaryItem.getCode())){
                 Integer isNormal = 1;
-                if (dictionaryDetail.getExtendField1().equals("0")) {
+                if ("0".equals(dictionaryDetail.getExtendField1())) {
                     isNormal = 0;
                 }
                 baseStudentService.changeIsNormal(dictionaryDetail.getCode(), isNormal);

+ 69 - 6
src/test/java/com/xjrsoft/module/job/JianyuekbScheduleTaskTest2.java

@@ -1,6 +1,5 @@
 package com.xjrsoft.module.job;
 
-import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.convert.Convert;
 import cn.hutool.core.util.IdUtil;
 import cn.hutool.core.util.StrUtil;
@@ -24,12 +23,18 @@ import com.xjrsoft.module.courseTable.dto.ClassTeacherDto;
 import com.xjrsoft.module.courseTable.entity.CourseTable;
 import com.xjrsoft.module.courseTable.service.ICourseTableService;
 import com.xjrsoft.module.organization.dto.WeChatSendMessageDto;
+import com.xjrsoft.module.organization.entity.Department;
 import com.xjrsoft.module.organization.entity.User;
+import com.xjrsoft.module.organization.service.IDepartmentService;
 import com.xjrsoft.module.organization.service.IUserService;
 import com.xjrsoft.module.organization.service.IWeChatService;
+import com.xjrsoft.module.schedule.entity.CourseReceiveMsg;
 import com.xjrsoft.module.schedule.entity.CourseTableBak;
+import com.xjrsoft.module.schedule.entity.JianyueData;
 import com.xjrsoft.module.schedule.entity.WfCourseAdjust;
+import com.xjrsoft.module.schedule.service.ICourseReceiveMsgService;
 import com.xjrsoft.module.schedule.service.ICourseTableBakService;
+import com.xjrsoft.module.schedule.service.IJianyueDataService;
 import com.xjrsoft.module.schedule.service.IWfCourseAdjustService;
 import com.xjrsoft.module.schedule.util.DataUtil;
 import com.xjrsoft.module.teacher.entity.BaseTeacher;
@@ -57,12 +62,12 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
+import java.text.SimpleDateFormat;
 import java.time.LocalDate;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
 import java.time.temporal.ChronoUnit;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
@@ -127,6 +132,15 @@ class JianyuekbScheduleTaskTest2 {
     @Autowired
     private IWorkflowExtraService workflowExtraService;
 
+    @Autowired
+    private ICourseReceiveMsgService receiveMsgService;
+
+    @Autowired
+    private IJianyueDataService jianyueDataService;
+
+    @Autowired
+    private IDepartmentService departmentService;
+
     @Test
     void test2(){
         WfCourseAdjust courseAdjust = adjustService.getById(1851529228440875008L);
@@ -138,7 +152,7 @@ class JianyuekbScheduleTaskTest2 {
         doExecute();
     }
     public void doExecute() {
-        String sql = "SELECT * FROM course_receive_msg WHERE delete_mark = 0 AND is_callback = -1";
+        String sql = "SELECT * FROM course_receive_msg WHERE delete_mark = 0 AND is_callback is null";
         List<Map<String, Object>> receiveMsgs = SqlRunnerAdapter.db().selectList(sql);
         if(receiveMsgs.isEmpty()){
             return;
@@ -180,6 +194,7 @@ class JianyuekbScheduleTaskTest2 {
         Map<String, Map<String, String>> dataMap = initDataMap();
         for (Map<String, Object> receiveMsg : receiveMsgs) {
             String eduYearSerialNo = receiveMsg.get("edu_year_serial_no").toString();
+            Long courseReceiveMsgId = Long.parseLong(receiveMsg.get("id").toString());
             if(ongoing.contains(eduYearSerialNo)){
                 continue;
             }
@@ -234,7 +249,7 @@ class JianyuekbScheduleTaskTest2 {
 
                 ongoing.remove(eduYearSerialNo);
                 redisUtil.set(taskKey, ongoing);
-                insertCourse(allScheduleInfo, dataMap, dataUtil);
+                insertCourse(allScheduleInfo, dataMap, dataUtil, courseReceiveMsgId);
                 //恢复挂起的流程
                 restoreCourseAdjust(processIds);
                 //处理该日期内已经审批通过的调课和顶课申请
@@ -247,7 +262,7 @@ class JianyuekbScheduleTaskTest2 {
         }
     }
 
-    void insertCourse(JsonArray scheduleInfo, Map<String, Map<String, String>> dataMap, DataUtil dataUtil){
+    void insertCourse(JsonArray scheduleInfo, Map<String, Map<String, String>> dataMap, DataUtil dataUtil, Long courseReceiveMsgId){
         //获取年级
         String tableName = "base_grade";
 //            Map<String, Long> gradeMap = dataMap.get(tableName);
@@ -267,10 +282,58 @@ class JianyuekbScheduleTaskTest2 {
         tableName = "base_classroom";
         Map<String, String> classroomMap = dataMap.get(tableName);
 
-        dataUtil.insertCourseTableEntiy(scheduleInfo, classroomMap, courseMap, semesterMap, teacherMap, classMap, null);
+        Set<String> techerIds = dataUtil.insertCourseTableEntiy(scheduleInfo, classroomMap, courseMap, semesterMap, teacherMap, classMap, courseReceiveMsgId);
+        sendMsg(techerIds, courseReceiveMsgId);
         dataUtil.insertClassTime(scheduleInfo);
     }
 
+    void sendMsg(Set<String> techerIds, Long courseReceiveMsgId){
+        try {
+            CourseReceiveMsg receiveMsg = receiveMsgService.getById(courseReceiveMsgId);
+            JianyueData jianyueData = jianyueDataService.getOne(
+                    new QueryWrapper<JianyueData>().lambda()
+                            .eq(JianyueData::getJianyueId, receiveMsg.getEduYearSerialNo())
+            );
+            String[] sourceId = jianyueData.getSourceId().split("_");
+            Department department = departmentService.getById(sourceId[0]);
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            //通知对应教师
+            List<User> userList = userService.listByIds(new ArrayList<>(techerIds));
+            for (User user : userList) {
+                WeChatSendMessageDto weChatSendMessageDto = new WeChatSendMessageDto();
+                weChatSendMessageDto.setTemplateId(wechatTemplate);
+                JSONObject paramJson = new JSONObject();
+
+                JSONObject thing8 = new JSONObject();
+                thing8.put("value", "课表更新");
+                paramJson.put("thing8", thing8);
+
+                JSONObject thing2 = new JSONObject();
+                thing2.put("value", department.getName());
+                paramJson.put("thing2", thing2);
+
+                JSONObject thing6 = new JSONObject();
+                thing6.put("value", "教务处");
+                paramJson.put("thing6", thing6);
+
+                JSONObject time3 = new JSONObject();
+                time3.put("value", sdf.format(receiveMsg.getCreateDate()));
+                paramJson.put("time3", time3);
+
+                weChatSendMessageDto.setContent(paramJson);
+                weChatSendMessageDto.setMsgId(IdUtil.getSnowflakeNextId() + "");
+
+                String openId = user.getOpenId();
+                if(openId != null && !"".equals(openId)){
+                    weChatSendMessageDto.setUserId(openId);
+                    weChatService.sendTemplateMessage(weChatSendMessageDto);
+                }
+            }
+        }catch (Exception e){
+            Log.error(e.getMessage(), e);
+        }
+    }
+
     Map<String, Map<String, String>> initDataMap(){
         Map<String, Map<String, String>> dataMap = new HashMap<>();
         String sql = "SELECT distinct table_name FROM jianyue_data WHERE 1 = 1";