Bläddra i källkod

Merge branch 'pre'

dzx 1 år sedan
förälder
incheckning
b84e27a7b9

+ 4 - 2
src/main/java/com/xjrsoft/module/activity/controller/ActivityInfoController.java

@@ -49,6 +49,8 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -200,8 +202,8 @@ public class ActivityInfoController {
             }
             infoVo.setName(objectMap.get("training_name").toString());
             infoVo.setContent(objectMap.get("training_topic").toString());
-            infoVo.setStartDate((Date)objectMap.get("start_time"));
-            infoVo.setEndDate((Date)objectMap.get("end_time"));
+            infoVo.setStartDate(Date.from(((LocalDateTime)objectMap.get("start_time")).atZone(ZoneId.systemDefault()).toInstant()));
+            infoVo.setEndDate(Date.from(((LocalDateTime)objectMap.get("end_time")).atZone(ZoneId.systemDefault()).toInstant()));
             infoVo.setPlace(objectMap.get("training_address").toString());
             infoVo.setDutyPerson(objectMap.get("person_in_charge").toString());
         }else if(category == 6){

+ 24 - 10
src/main/java/com/xjrsoft/module/form/service/impl/FormExecuteServiceImpl.java

@@ -1294,12 +1294,22 @@ public class FormExecuteServiceImpl implements IFormExecuteService {
 
                 //主表如果有审计字段  默认填充值
                 putAuditEntityUpdateData(entity, columns);
-
-                Boolean result = SqlRunnerAdapter.db().dynamicUpdate(tableName, entity, where);
-                if (!result) {
-                    throw new MyException("更新数据失败");
+                Entity findwhere = Entity.create(tableName);
+                findwhere.putAll(where);
+                findwhere.putAll(entity);
+                Map<String, Object> objectMap = SqlRunnerAdapter.db().dynamicSelectOne(tableName, findwhere);
+                Boolean isUpdate = false;
+                if(objectMap == null){
+                    isUpdate = true;
                 }
 
+                Boolean result = null;
+                if(isUpdate){
+                    result = SqlRunnerAdapter.db().dynamicUpdate(tableName, entity, where);
+                    if (!result) {
+                        throw new MyException("更新数据失败");
+                    }
+                }
                 // 遍历数据 根据 表名 保存子表数据
                 for (Map.Entry<String, List<Entity>> tableMap : childMaps.entrySet()) {
                     //先删除子表单数据 然后再新增  这里使用物理删除  不再逻辑删除。  tableMap的key  就是 子表的表名
@@ -1307,15 +1317,19 @@ public class FormExecuteServiceImpl implements IFormExecuteService {
 
                     if (childTableConfig.isPresent()) {
                         //删除子表单数据
-                        Entity childDeleteWhere = Entity.create(tableMap.getKey()).set(childTableConfig.get().getRelationField(), keyValue);
-                        result = SqlRunnerAdapter.db().dynamicDelete(tableName, childDeleteWhere);
-                        if (!result) {
-                            throw new MyException("删除数据失败");
-                        }
+                        String keyValuesStr = "(" + keyValue + ")";
 
+                        long count = SqlRunnerAdapter.db().selectCount("select * from " + childTableConfig.get().getTableName() + " where " + childTableConfig.get().getRelationField() + " in " + keyValuesStr);
+                        if(count > 0){
+                            Entity childDeleteWhere = Entity.create(tableMap.getKey()).set(childTableConfig.get().getRelationField(), keyValue);
+                            result = SqlRunnerAdapter.db().dynamicDelete(childTableConfig.get().getTableName(), childDeleteWhere);
+                            if (!result) {
+                                throw new MyException("删除数据失败");
+                            }
+                        }
                         //再重新新增
                         List<Entity> childList = tableMap.getValue();
-                        result = SqlRunnerAdapter.db().dynamicInsertBatch(tableName, childList);
+                        result = SqlRunnerAdapter.db().dynamicInsertBatch(childTableConfig.get().getTableName(), childList);
                         if (!result) {
                             throw new MyException("添加数据失败");
                         }

+ 34 - 0
src/main/java/com/xjrsoft/module/job/ActivityInfoTask.java

@@ -0,0 +1,34 @@
+package com.xjrsoft.module.job;
+
+import com.xjrsoft.common.mybatis.SqlRunnerAdapter;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author dzx
+ * @date 2024年8月8日
+ */
+@Component
+@Slf4j
+public class ActivityInfoTask {
+
+    @Scheduled(cron = "0 */5 * * * ?")
+    public void RefreshConnectionPool() {
+//        String active = SpringUtil.getActiveProfile();
+//        if(!"prod".equals(active)){
+//            log.info("非正式环境,无法执行数据推送");
+//            return;
+//        }
+        doExecute();
+    }
+
+    void doExecute(){
+        String sql = "UPDATE activity_info SET STATUS = 2 WHERE delete_mark = 0 AND enroll_end_time < NOW()";
+        SqlRunnerAdapter.db().update(sql);
+        sql = "UPDATE activity_info SET STATUS = 3 WHERE delete_mark = 0 AND end_date < NOW()";
+        SqlRunnerAdapter.db().update(sql);
+    }
+
+
+}

+ 11 - 2
src/main/java/com/xjrsoft/module/personnel/controller/StundentFaceProcessController.java

@@ -233,6 +233,15 @@ public class StundentFaceProcessController {
         }
         JsonParser parser = new JsonParser();
 
+        String[] imgSuffix = new String[]{"png", "jpg", "jpeg"};
+        Map<String, String> map = new HashMap<String, String>() {
+            {
+                put("jpg", "data:image/jpg;base64,");
+                put("jpeg", "data:image/jpeg;base64,");
+                put("png", "data:image/png;base64,");
+            }
+        };
+
         ApiUtil apiUtil = new ApiUtil();
         ZipFile zipFile = FileZipUtil.convertToZipFile(file);
         Enumeration<? extends ZipEntry> entries = zipFile.entries();
@@ -305,7 +314,7 @@ public class StundentFaceProcessController {
                 long baseFaceId = IdUtil.getSnowflakeNextId();
                 FaceManagement baseFace = new FaceManagement();
                 baseFace.setId(baseFaceId);
-                baseFace.setRegisterBase64(base64String);
+                baseFace.setRegisterBase64(map.get(suffix) + base64String);
                 baseFace.setUserId(studentUser.getId());
                 baseFace.setSex(studentUser.getGender());
                 baseFace.setName(studentUser.getName());
@@ -411,7 +420,7 @@ public class StundentFaceProcessController {
 
                 FaceManagement faceManagement = faceManagementMap.get(studentUser.getId());
                 faceManagement.setVerifyStatus(2);
-                faceManagement.setRegisterBase64(base64String);
+                faceManagement.setRegisterBase64(map.get(suffix) + base64String);
                 faceManagement.setFileId(folderId);
                 faceManagementService.update(faceManagement);
             }

+ 36 - 28
src/main/java/com/xjrsoft/module/personnel/controller/TeacherFaceProcessController.java

@@ -24,8 +24,9 @@ import com.xjrsoft.common.utils.ImageUtil;
 import com.xjrsoft.common.utils.UploadUtil;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.hikvision.util.ApiUtil;
-import com.xjrsoft.module.organization.entity.Department;
+import com.xjrsoft.module.organization.entity.User;
 import com.xjrsoft.module.organization.entity.UserDeptRelation;
+import com.xjrsoft.module.organization.service.IUserService;
 import com.xjrsoft.module.personnel.dto.AddTeacherFaceProcessDto;
 import com.xjrsoft.module.personnel.dto.TeacherFaceProcessPageDto;
 import com.xjrsoft.module.personnel.dto.UpdateTeacherFaceProcessDto;
@@ -38,9 +39,9 @@ import com.xjrsoft.module.personnel.vo.TeacherFaceProcessVo;
 import com.xjrsoft.module.system.entity.DictionaryDetail;
 import com.xjrsoft.module.system.entity.File;
 import com.xjrsoft.module.system.service.IFileService;
+import com.xjrsoft.module.teacher.entity.BaseTeacher;
 import com.xjrsoft.module.teacher.entity.XjrUser;
 import com.xjrsoft.module.teacher.service.ITeacherbaseManagerService;
-import com.xjrsoft.module.teacher.vo.XjrUserPageVo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.AllArgsConstructor;
@@ -90,6 +91,7 @@ public class TeacherFaceProcessController {
     private final IFaceManagementService faceManagementService;
 
     private final IFileService fileService;
+    private final IUserService userService;
 
     @GetMapping(value = "/page")
     @ApiOperation(value="人脸信息审核列表(分页)")
@@ -170,20 +172,16 @@ public class TeacherFaceProcessController {
     @ApiOperation(value = "批量新增教师人脸")
     @SaCheckPermission("stundentfaceprocess:batch-upload")
     public RT<Boolean> batchUpload(@RequestParam("file") MultipartFile file) throws Exception {
-        List<XjrUserPageVo> list = teacherbaseManagerService.selectJoinList(XjrUserPageVo.class,
-                new MPJLambdaWrapper<XjrUser>()
+        List<User> list = userService.list(
+                new MPJLambdaWrapper<User>()
                         .distinct()
-                        .select(XjrUser::getId)
-                        .selectAs(Department::getId, XjrUserPageVo::getDeptId)
-                        .selectAs(Department::getName, XjrUserPageVo::getDeptIdCn)
-                        .select(XjrUser.class, x -> VoToColumnUtil.fieldsToColumns(XjrUserPageVo.class).contains(x.getProperty()))
-                        .leftJoin(UserDeptRelation.class, UserDeptRelation::getUserId, XjrUser::getId)
-                        .leftJoin(Department.class, Department::getId, UserDeptRelation::getDeptId)
-                        .eq(XjrUser::getDeleteMark, DeleteMark.NODELETE.getCode())
-                        .eq(Department::getDeleteMark, DeleteMark.NODELETE.getCode())
+                        .select(User::getId)
+                        .select(User.class, x -> VoToColumnUtil.fieldsToColumns(User.class).contains(x.getProperty()))
+                        .innerJoin(BaseTeacher.class, BaseTeacher::getUserId, XjrUser::getId)
+                        .eq(User::getDeleteMark, DeleteMark.NODELETE.getCode())
         );
-        Map<String, XjrUserPageVo> teacherMap = new HashMap<>();
-        for (XjrUserPageVo teacher : list) {
+        Map<String, User> teacherMap = new HashMap<>();
+        for (User teacher : list) {
             teacherMap.put(teacher.getCredentialNumber(), teacher);
         }
 
@@ -212,13 +210,23 @@ public class TeacherFaceProcessController {
         ApiUtil apiUtil = new ApiUtil();
         ZipFile zipFile = FileZipUtil.convertToZipFile(file);
         Enumeration<? extends ZipEntry> entries = zipFile.entries();
+
+        String[] imgSuffix = new String[]{"png", "jpg", "jpeg"};
+        Map<String, String> map = new HashMap<String, String>() {
+            {
+                put("jpg", "data:image/jpg;base64,");
+                put("jpeg", "data:image/jpeg;base64,");
+                put("png", "data:image/png;base64,");
+            }
+        };
+
         while (entries.hasMoreElements()){
             ZipEntry entry = entries.nextElement();
             String filename = entry.getName();
             InputStream inputStream = zipFile.getInputStream(entry); //读取文件内容
             String[] split = filename.split("\\.");
             String idNumber = split[0].substring(split[0].length() - 18);
-            XjrUserPageVo teacherUser = teacherMap.get(idNumber);
+            User teacherUser = teacherMap.get(idNumber);
             if(teacherUser == null){
                 continue;
             }
@@ -272,13 +280,13 @@ public class TeacherFaceProcessController {
             fileEntity.setFileType(suffix);
             fileService.save(fileEntity);
 
-            TeacherFaceProcess process = faceMap.get(Long.parseLong(teacherUser.getId()));
+            TeacherFaceProcess process = faceMap.get(teacherUser.getId());
             if(process == null){
                 long baseFaceId = IdUtil.getSnowflakeNextId();
                 FaceManagement baseFace = new FaceManagement();
                 baseFace.setId(baseFaceId);
-                baseFace.setRegisterBase64(base64String);
-                baseFace.setUserId(Long.parseLong(teacherUser.getId()));
+                baseFace.setRegisterBase64(map.get(suffix) + base64String);
+                baseFace.setUserId(teacherUser.getId());
                 baseFace.setSex(teacherUser.getGender());
                 baseFace.setName(teacherUser.getName());
                 baseFace.setIdno(teacherUser.getCredentialNumber());
@@ -288,7 +296,8 @@ public class TeacherFaceProcessController {
                 baseFace.setDeleteMark(0);
                 baseFace.setStatus(1);
                 baseFace.setFileId(folderId);
-                baseFace.setUserType(2L);
+                baseFace.setUserType(1L);
+                baseFace.setVerifyStatus(1);
                 faceManagementService.save(baseFace);
 
                 TeacherFaceProcess teacherFace = new TeacherFaceProcess();
@@ -299,11 +308,11 @@ public class TeacherFaceProcessController {
                 teacherFace.setGender(teacherUser.getGender());
                 teacherFace.setFacePhoto(folderId);
                 teacherFace.setName(teacherUser.getName());
-                teacherFace.setDepId(Long.parseLong(teacherUser.getDeptId()));
-                teacherFace.setDepCn(teacherUser.getDeptIdCn());
+//                teacherFace.setDepId(Long.parseLong(teacherUser.getDeptId()));
+//                teacherFace.setDepCn(teacherUser.getDeptIdCn());
                 teacherFace.setIdentityCard(teacherUser.getCredentialNumber());
                 teacherFace.setStatus(1);
-                teacherFace.setUserId(Long.parseLong(teacherUser.getId()));
+                teacherFace.setUserId(teacherUser.getId());
                 teacherFace.setExamStatus(1);
 
                 //将人脸上传海康
@@ -351,7 +360,6 @@ public class TeacherFaceProcessController {
                             if(personPhoto.size() > 0){
                                 faceId = personPhoto.get(0).getAsJsonObject().get("personPhotoIndexCode").getAsString();
                             }
-
                         }
                     }
                 }
@@ -379,22 +387,22 @@ public class TeacherFaceProcessController {
 
                 teacherFaceProcessService.updateById(process);
 
-                FaceManagement faceManagement = faceManagementMap.get(Long.parseLong(teacherUser.getId()));
+                FaceManagement faceManagement = faceManagementMap.get(teacherUser.getId());
                 if(faceManagement == null){
                     faceManagement = new FaceManagement();
-                    faceManagement.setUserType(2L);
-                    faceManagement.setUserId(Long.parseLong(teacherUser.getId()));
+                    faceManagement.setUserType(1L);
+                    faceManagement.setUserId(teacherUser.getId());
                     faceManagement.setFileId(folderId);
                     faceManagement.setIdno(teacherUser.getCredentialNumber());
                     faceManagement.setName(teacherUser.getName());
                     faceManagement.setSyncStatus(1);
                     faceManagement.setSex(teacherUser.getGender());
                     faceManagement.setVerifyStatus(2);
-                    faceManagement.setRegisterBase64(base64String);
+                    faceManagement.setRegisterBase64(map.get(suffix) + base64String);
                     faceManagementService.save(faceManagement);
                 }else{
                     faceManagement.setVerifyStatus(2);
-                    faceManagement.setRegisterBase64(base64String);
+                    faceManagement.setRegisterBase64(map.get(suffix) + base64String);
                     faceManagementService.update(faceManagement);
                 }
 

+ 5 - 1
src/main/java/com/xjrsoft/module/student/controller/BaseStudentScholarshipApplicantController.java

@@ -8,11 +8,13 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.github.yulichang.toolkit.MPJWrappers;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.xjrsoft.common.model.result.RT;
 import com.xjrsoft.common.page.ConventPage;
 import com.xjrsoft.common.page.PageOutput;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.base.entity.BaseSemester;
+import com.xjrsoft.module.organization.entity.User;
 import com.xjrsoft.module.student.dto.AddBaseStudentScholarshipApplicantDto;
 import com.xjrsoft.module.student.dto.BaseStudentScholarshipApplicantCategoryPageDto;
 import com.xjrsoft.module.student.dto.BaseStudentScholarshipApplicantPageDto;
@@ -133,9 +135,11 @@ public class BaseStudentScholarshipApplicantController {
     @SaCheckPermission("basestudentscholarshipapplicant:detail")
     public RT<List<ScholarshipApplicantOptionVo>> optionSelect(@Valid BaseStudentScholarshipApplicantPageDto dto){
         List<BaseStudentScholarshipApplicant> applicantList = applicantService.list(
-            new QueryWrapper<BaseStudentScholarshipApplicant>().lambda()
+            new MPJLambdaWrapper<BaseStudentScholarshipApplicant>()
             .select(BaseStudentScholarshipApplicant::getId)
+            .selectAs(User::getName, BaseStudentScholarshipApplicant::getName)
             .select(BaseStudentScholarshipApplicant.class,x -> VoToColumnUtil.fieldsToColumns(BaseStudentScholarshipApplicantPageVo.class).contains(x.getProperty()))
+            .leftJoin(User.class, User::getId, BaseStudentScholarshipApplicant::getApplicantUserId)
             .eq(ObjectUtil.isNotNull(dto.getBaseStudentScholarshipCategoryId()),BaseStudentScholarshipApplicant::getBaseStudentScholarshipCategoryId, dto.getBaseStudentScholarshipCategoryId())
             .eq(ObjectUtil.isNotNull(dto.getSemesterId()), BaseStudentScholarshipApplicant::getBaseSemesterId, dto.getSemesterId())
             .eq(BaseStudentScholarshipApplicant::getStatus, 1)

+ 13 - 0
src/main/java/com/xjrsoft/module/student/controller/BaseStudentScholarshipReleaseController.java

@@ -38,6 +38,7 @@ import org.springframework.web.multipart.MultipartFile;
 import javax.validation.Valid;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Date;
 import java.util.List;
 import java.util.Map;
 
@@ -139,14 +140,26 @@ public class BaseStudentScholarshipReleaseController {
                             .in(BaseStudentScholarshipApplicant::getId, dto.getApplicantIds())
             );
             List<BaseStudentScholarshipApplicant> dataList = new ArrayList<>();
+            List<BaseStudentScholarshipRelease> insertList = new ArrayList<>();
             for (BaseStudentScholarshipApplicant applicantVo : applicantList) {
                 applicantVo.setScholarshipLevel(dto.getScholarshipLevel());
                 applicantVo.setBaseStudentScholarshipCategoryId(dto.getBaseStudentScholarshipCategoryId());
                 dataList.add(applicantVo);
+
+                insertList.add(
+                        new BaseStudentScholarshipRelease(){{
+                            setAmount(applicantVo.getAmount());
+                            setBaseStudentScholarshipApplicantId(applicantVo.getId());
+                            setReleaseDate(new Date());
+                        }}
+                );
             }
             if(!dataList.isEmpty()){
                 applicantService.updateBatchById(dataList);
             }
+            if(!insertList.isEmpty()){
+                releaseService.saveBatch(insertList);
+            }
         }
         return RT.ok(true);
     }

+ 2 - 2
src/main/java/com/xjrsoft/module/student/entity/BaseStudentDevelopment.java

@@ -103,7 +103,7 @@ public class BaseStudentDevelopment implements Serializable {
     * 是否灵活就业(1:是 0:否)
     */
     @ApiModelProperty("工作内容")
-    private Integer workContent;
+    private String workContent;
     /**
     * 是否校企合作单位(1:是 0:否)
     */
@@ -113,7 +113,7 @@ public class BaseStudentDevelopment implements Serializable {
     * 企合作单位(company_coop),是校企合作单位
     */
     @ApiModelProperty("企合作单位(company_coop),是校企合作单位")
-    private Integer companyCoopId;
+    private Long companyCoopId;
     /**
     * 就业单位名称(非校企合作单位)
     */

+ 1 - 1
src/main/resources/mapper/activity/ActivityInfoMapper.xml

@@ -66,7 +66,7 @@
         a2.event_content AS content,4 AS category,2 AS enroll_status
         , a2.event_type AS type_cn, 1 as is_enroll
         FROM moral_event a2 WHERE a2.delete_mark = 0 AND
-        (a2.attend_teacher = #{dto.loginUserId} OR FIND_IN_SET((
+        (a2.attend_teacher like concat('%',#{dto.loginUserId},'%') OR FIND_IN_SET((
         SELECT class_id FROM base_student_school_roll WHERE user_id = #{dto.loginUserId}
         ),a2.attend_class) > 0
         )

+ 7 - 1
src/main/resources/mapper/student/BaseStudentScholarshipCategoryMapper.xml

@@ -17,6 +17,12 @@
         ) as applicant_count,t3.name as semester_name, t1.scholarship_level,t1.base_semester_id as semester_id FROM base_student_scholarship_category t1
         LEFT JOIN xjr_dictionary_detail t2 ON t1.category = t2.code
         left join base_semester t3 on t1.base_semester_id = t3.id
-        WHERE t1.delete_mark = 0;
+        WHERE t1.delete_mark = 0
+        <if test="dto.name != null and dto.name != ''">
+            and t1.name like concat('%', #{dto.name},'%')
+        </if>
+        <if test="dto.semesterId != null">
+            and t1.base_semester_id = #{dto.semesterId}
+        </if>
     </select>
 </mapper>