Bläddra i källkod

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

phoenix 1 år sedan
förälder
incheckning
f2abbac590

+ 1 - 1
Makefile

@@ -2,7 +2,7 @@ merge:
 	git checkout master;git merge dev;git push;git checkout dev;
 
 create-tag:
-	git checkout master;git tag v1.3.0;git push origin --tags;git checkout dev;
+	git checkout master;git tag v1.3.1;git push origin --tags;git checkout dev;
 
 remove-tag:
 	git tag -d v1.2.0;git push origin :refs/tags/v1.1.8;

+ 17 - 16
src/main/java/com/xjrsoft/module/personnel/controller/BasePersonnelLabourCapitalController.java

@@ -40,6 +40,8 @@ import org.springframework.web.multipart.MultipartFile;
 import javax.validation.Valid;
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
@@ -113,25 +115,24 @@ public class BasePersonnelLabourCapitalController {
     }
     @PostMapping("/import")
     @ApiOperation(value = "导入")
-    public RT<Boolean> importData(@Valid AddBasePersonnelLabourCapitalDto dto, @RequestParam("file") MultipartFile file) throws IOException {
-        List<Map<Integer, Object>> excelDataList = EasyExcel.read(file.getInputStream()).sheet().headRowNumber(dto.getDataRow() - 1).doReadSync();
+    public RT<Boolean> importData(@Valid AddBasePersonnelLabourCapitalDto dto, @RequestParam("file") MultipartFile file) throws IOException, ParseException {
+        List<Map<Integer, Object>> excelDataList = EasyExcel.read(file.getInputStream()).sheet().headRowNumber(4 - 1).doReadSync();
         //验证数据
 
-        //默认数据
-        dto.setDataRow(4);
-        dto.setIdNumberColumn(1);
-        dto.setIdTypeColumn(0);
-        dto.setPersonnelNameColumn(3);
-        dto.setJobNumberColumn(2);
-        dto.setAmountToColumn(4);
-
         //处理表头数据,目前只支持2行表头
         List<BasePersonnelLabourCapitalTitle> titleList = initTitleList(excelDataList.get(0), excelDataList.get(1));
         //读取表内容数据
         List<BasePersonnelLabourCapitalData> dataList = initDataList(dto, excelDataList);
-
+        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
         //构造数据
         BasePersonnelLabourCapital basePersonnelLabourCapital = BeanUtil.toBean(dto, BasePersonnelLabourCapital.class);
+        basePersonnelLabourCapital.setDataRow(4);
+        basePersonnelLabourCapital.setPersonnelNameColumn(3);
+        basePersonnelLabourCapital.setAmountToColumn(4);
+        basePersonnelLabourCapital.setIdTypeColumn(0);
+        basePersonnelLabourCapital.setIdNumberColumn(1);
+        basePersonnelLabourCapital.setJobNumberColumn(2);
+        basePersonnelLabourCapital.setDateOfIssue(sdf.parse(dto.getDateOfIssue()));
         //添加表头数据
         basePersonnelLabourCapital.setBasePersonnelLabourCapitalTitleList(titleList);
         basePersonnelLabourCapital.setBasePersonnelLabourCapitalDataList(dataList);
@@ -154,11 +155,11 @@ public class BasePersonnelLabourCapitalController {
             }
             Map<Integer, Object> datatMap = excelDataList.get(i);
             BasePersonnelLabourCapitalData data = new BasePersonnelLabourCapitalData();
-            data.setName(datatMap.get(dto.getPersonnelNameColumn()) == null?null:datatMap.get(dto.getPersonnelNameColumn()).toString());
-            data.setIdNumber(datatMap.get(dto.getIdNumberColumn()) == null?null:datatMap.get(dto.getIdNumberColumn()).toString());
-            data.setIdType(datatMap.get(dto.getIdTypeColumn()) == null?null:datatMap.get(dto.getIdTypeColumn()).toString());
-            data.setAmountTo(datatMap.get(dto.getAmountToColumn()) == null?null:datatMap.get(dto.getAmountToColumn()).toString());
-            data.setJobNumber(datatMap.get(dto.getJobNumberColumn()) == null?null:datatMap.get(dto.getJobNumberColumn()).toString());
+            data.setName(datatMap.get(3) == null?null:datatMap.get(3).toString());
+            data.setIdNumber(datatMap.get(1) == null?null:datatMap.get(1).toString());
+            data.setIdType(datatMap.get(0) == null?null:datatMap.get(0).toString());
+            data.setAmountTo(datatMap.get(4) == null?null:datatMap.get(4).toString());
+            data.setJobNumber(datatMap.get(2) == null?null:datatMap.get(2).toString());
             data.setExtendJson(JsonUtil.toJsonString(datatMap));
             resultList.add(data);
         }

+ 2 - 36
src/main/java/com/xjrsoft/module/personnel/dto/AddBasePersonnelLabourCapitalDto.java

@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.io.Serializable;
+import java.time.LocalDate;
 import java.util.Date;
 import java.util.List;
 
@@ -29,41 +30,6 @@ public class AddBasePersonnelLabourCapitalDto implements Serializable {
     * 发放年月
     */
     @ApiModelProperty("发放年月")
-    private Date dateOfIssue;
-    /**
-    * 数据开始行
-    */
-    @ApiModelProperty("数据开始行")
-    private Integer dataRow;
-    /**
-    * 证件类型所属列
-    */
-    @ApiModelProperty("证件类型所属列")
-    private Integer idTypeColumn;
-    /**
-    * 证件号码所属列
-    */
-    @ApiModelProperty("证件号码所属列")
-    private Integer idNumberColumn;
-    /**
-    * 工号所属列
-    */
-    @ApiModelProperty("工号所属列")
-    private Integer jobNumberColumn;
-    /**
-    * 名称所属列
-    */
-    @ApiModelProperty("名称所属列")
-    private Integer personnelNameColumn;
-    /**
-    * 合计所属列
-    */
-    @ApiModelProperty("合计所属列")
-    private Integer amountToColumn;
-    /**
-    * 数据文件
-    */
-    @ApiModelProperty("数据文件")
-    private String dataFile;
+    private String dateOfIssue;
 
 }

+ 56 - 39
src/main/java/com/xjrsoft/module/room/service/impl/RoomBedServiceImpl.java

@@ -9,6 +9,7 @@ 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.toolkit.MPJWrappers;
+import com.github.yulichang.wrapper.MPJLambdaWrapper;
 import com.xjrsoft.common.enums.DeleteMark;
 import com.xjrsoft.common.utils.VoToColumnUtil;
 import com.xjrsoft.module.base.entity.BaseClass;
@@ -36,7 +37,6 @@ import com.xjrsoft.module.room.vo.DistributeResultListVo;
 import com.xjrsoft.module.room.vo.DistributeRoomBedPageVo;
 import com.xjrsoft.module.room.vo.NoBedStudentPageVo;
 import com.xjrsoft.module.room.vo.RoomBedPageVo;
-import com.xjrsoft.module.room.vo.RoomBedVo;
 import com.xjrsoft.module.room.vo.RoomClassCountVo;
 import com.xjrsoft.module.student.entity.BaseStudent;
 import com.xjrsoft.module.student.entity.BaseStudentSchoolRoll;
@@ -49,8 +49,10 @@ import org.springframework.stereotype.Service;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 /**
 * @title: 寝室床位
@@ -131,16 +133,22 @@ public class RoomBedServiceImpl extends MPJBaseServiceImpl<RoomBedMapper, RoomBe
 
     @Override
     public Boolean distributeRoomBed(DistributeRoomBedDto dto) {
-        //查询出所有床位信息
-        List<RoomBedVo> bedInfoList = roomBedMapper.getBedInfo(dto.getRoomIds());
-
-        Room room = roomMapper.selectById(dto.getRoomIds().get(0));
-        String gender = room.getGender();
-        Integer genderNumber = null;
-        if("SB10001".equals(gender)){
-            genderNumber = 1;
-        }else if("SB10002".equals(gender)){
-            genderNumber = 2;
+        List<Room> roomList = roomMapper.selectList(new QueryWrapper<Room>().lambda().in(Room::getId, dto.getRoomIds()));
+        Set<Integer> genderSet = new HashSet<>();
+        for (Room room : roomList) {
+            if("SB10001".equals(room.getGender())){
+                genderSet.add(1);
+            }else if("SB10002".equals(room.getGender())){
+                genderSet.add(2);
+            }
+        }
+        Map<Integer, String> genderMap = new HashMap<>();
+        for (Integer genderNumber : genderSet) {
+            if(genderNumber == 1){
+                genderMap.put(genderNumber, "SB10001");
+            }else if(genderNumber == 2){
+                genderMap.put(genderNumber, "SB10002");
+            }
         }
 
         Date modifyDate = new Date();
@@ -150,38 +158,47 @@ public class RoomBedServiceImpl extends MPJBaseServiceImpl<RoomBedMapper, RoomBe
         int i = 0;
         Map<Long, Integer> classDistributeBedNumber = new HashMap<>();
         Map<Long, Integer> classStudent = new HashMap<>();
-        for (Long classId : dto.getClassIds()) {
-            List<BaseStudent> studentList = baseStudentMapper.selectList(
-                MPJWrappers.<BaseStudent>lambdaJoin()
-                .select(BaseStudent::getUserId)
-                .eq(BaseClass::getId, classId)
-                .eq(XjrUser::getGender, genderNumber)
-                .eq(BaseStudentSchoolRoll::getStduyStatus, "FB3002")
-                .eq(BaseStudent::getDeleteMark, DeleteMark.NODELETE.getCode())
-                .eq(XjrUser::getDeleteMark, DeleteMark.NODELETE.getCode())
-                .innerJoin(XjrUser.class, XjrUser::getId, BaseStudent::getUserId)
-                .leftJoin(BaseStudentSchoolRoll.class, BaseStudentSchoolRoll::getUserId, BaseStudent::getUserId)
-                .leftJoin(BaseClass.class, BaseClass::getId, BaseStudentSchoolRoll::getClassId)
+        for (Integer genderNumber : genderSet) {
+            //根据性别查询出所有床位信息
+            List<RoomBed> bedInfoList = roomBedMapper.selectList(
+                new MPJLambdaWrapper<RoomBed>()
+                .innerJoin(Room.class, Room::getId, RoomBed::getRoomId)
+                .eq(Room::getGender, genderMap.get(genderNumber))
+                .in(RoomBed::getRoomId, dto.getRoomIds())
             );
-            //已分配床位数
-            int distributeBedNumber = 0;
-            for (BaseStudent studentInfoVo : studentList) {
-                if(i >= bedInfoList.size()){
-                    continue;
-                }
-                RoomBedVo roomBedVo = bedInfoList.get(i);
-                RoomBed roomBed = BeanUtil.toBean(roomBedVo, RoomBed.class);
-                roomBed.setStudentUserId(studentInfoVo.getUserId());
-                roomBed.setModifyDate(modifyDate);
-                roomBed.setModifyUserId(modifyUserId);
-                roomBedMapper.updateById(roomBed);
-                i ++;
-                distributeBedNumber ++;
 
+            for (Long classId : dto.getClassIds()) {
+                List<BaseStudent> studentList = baseStudentMapper.selectList(
+                    MPJWrappers.<BaseStudent>lambdaJoin()
+                    .select(BaseStudent::getUserId)
+                    .eq(BaseClass::getId, classId)
+                    .eq(XjrUser::getGender, genderNumber)
+                    .eq(BaseStudentSchoolRoll::getStduyStatus, "FB3002")
+                    .eq(BaseStudent::getDeleteMark, DeleteMark.NODELETE.getCode())
+                    .eq(XjrUser::getDeleteMark, DeleteMark.NODELETE.getCode())
+                    .innerJoin(XjrUser.class, XjrUser::getId, BaseStudent::getUserId)
+                    .leftJoin(BaseStudentSchoolRoll.class, BaseStudentSchoolRoll::getUserId, BaseStudent::getUserId)
+                    .leftJoin(BaseClass.class, BaseClass::getId, BaseStudentSchoolRoll::getClassId)
+                );
+                //已分配床位数
+                int distributeBedNumber = 0;
+                for (BaseStudent studentInfoVo : studentList) {
+                    if(i >= bedInfoList.size()){
+                        continue;
+                    }
+                    RoomBed roomBed = bedInfoList.get(i);
+                    roomBed.setStudentUserId(studentInfoVo.getUserId());
+                    roomBed.setModifyDate(modifyDate);
+                    roomBed.setModifyUserId(modifyUserId);
+                    roomBedMapper.updateById(roomBed);
+                    i ++;
+                    distributeBedNumber ++;
+                }
+                classDistributeBedNumber.put(classId, distributeBedNumber);
+                classStudent.put(classId, studentList.size());
             }
-            classDistributeBedNumber.put(classId, distributeBedNumber);
-            classStudent.put(classId, studentList.size());
         }
+
         Map<Long, Long> classGradeMap = new HashMap<>();
         baseClassMapper.selectList(
             MPJWrappers.<BaseClass>lambdaJoin().in(BaseClass::getId, dto.getClassIds())

+ 10 - 0
src/main/java/com/xjrsoft/module/room/vo/DistributeClassPageVo.java

@@ -52,4 +52,14 @@ public class DistributeClassPageVo {
     @ExcelProperty("已分配床位数")
     @ApiModelProperty("已分配床位数")
     private Integer distributeCount;
+
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("需要住宿的男生人数")
+    @ApiModelProperty("需要住宿的男生人数")
+    private Integer maleCount;
+
+    @ContentStyle(dataFormat = 49)
+    @ExcelProperty("需要住宿的女生人数")
+    @ApiModelProperty("需要住宿的女生人数")
+    private Integer femaleCount;
 }

+ 20 - 1
src/main/resources/mapper/room/RoomBedMapper.xml

@@ -64,7 +64,26 @@
                 and c4.gender = 2
             </if>
         </if>
-        ) AS need_count,(
+        ) AS need_count,
+        (
+            SELECT COUNT(*) FROM base_student c1
+            LEFT JOIN base_student_school_roll c2 ON c1.user_id = c2.user_id
+            LEFT JOIN xjr_dictionary_detail c3 ON c2.stduy_status = c3.code AND c3.item_id = 2023000000000000030
+            left join xjr_user c4 on c1.user_id = c4.id
+            WHERE c1.delete_mark = 0 AND c2.delete_mark = 0
+            AND c3.code = 'FB3002' AND c2.class_id = t1.id
+            and c4.gender = 1
+        ) as male_count,
+        (
+            SELECT COUNT(*) FROM base_student c1
+            LEFT JOIN base_student_school_roll c2 ON c1.user_id = c2.user_id
+            LEFT JOIN xjr_dictionary_detail c3 ON c2.stduy_status = c3.code AND c3.item_id = 2023000000000000030
+            left join xjr_user c4 on c1.user_id = c4.id
+            WHERE c1.delete_mark = 0 AND c2.delete_mark = 0
+            AND c3.code = 'FB3002' AND c2.class_id = t1.id
+            and c4.gender = 2
+        ) as female_count,
+        (
         SELECT COUNT(*) FROM room_bed a1
         LEFT JOIN base_student_school_roll a2 ON a1.student_user_id = a2.user_id
         left join xjr_user c4 on a2.user_id = c4.id